Kan oorspronkelijk WorkBook na aanroep tweede WorkBook niet activeren

Status
Niet open voor verdere reacties.

VBAleerling

Gebruiker
Lid geworden
16 jul 2018
Berichten
11
Hallo allemaal,

Vanuit een Excel bestand (wb1) wordt een tweede bestand geopend middels het Set commando
Code:
 Set wb2 = WorkBooks.Open (SecondFile)
wb2 is dan in beeld, maar dat wil ik niet!
De gegevens uit wb2 worden ingelezen in de opnieuw geactiveerde wb1.
Code:
 WorkBooks (wb1).Worksheets ("JAN").Activate
Dat inlezen gaat goed, maar helaas blijft wb2 in beeld.
Tenzij ik bijvoorbeeld een MsgBox plaats, dan komt wb1 wel in beeld.

Wie weet een oplossing?
 
Code:
with GetObject([COLOR=#3E3E3E]SecondFile[/COLOR])

Aanvulling op je eigen code: In je code kan je met ThisWorkbook verwijzen naar het boek waar de code staat.
Met ActiveWorkbook verwijs je naar het boek dat actief is.
 
Laatst bewerkt:
Bedankt voor je snelle reactie.

wb1 is trouwens eerder al toegewezen aan ThisWorkBook
Het punt is dat wb2 open moet blijven, omdat in het Excelbestand van wb1 via functies gegevens (tijdelijk) moeten worden ingelezen.
Bijvoorbeeld in cel D4
Code:
 =INDIRECT($C$30& "R54K"&KOLOM(D$1);ONWAAR)
waarbij C30 naar het pad van werkbook2 verwijst.

Er wordt namelijk ook nog een derde workbook geopend.
De gegevens van wb2 en wb3 worden dan gecombineerd weergegeven in wb1.
Maar zicht houden op wb2 en wb3 moet mogelijk blijven, dus ze moeten open blijven
 
Laatst bewerkt:
Inlezen doe je ook met Vba en niet met formules.

Code:
wb1.sheets(1).range("a1:c10") = wb2.sheets(1).range("a1:c10").value
 
Tja, dat wordt dan wel veel werk om alles om te zetten.
Terwijl ik alleen maar wb1 zichtbaar (active) wil maken, na openen wb2 en wb3.
 
Zelf weten.
Code:
Workbooks.Open ([COLOR=#3E3E3E]SecondFile[/COLOR])
thisworkbook.activate

eventueel:
Code:
thisworkbook.sheets("jan").activate
 
Laatst bewerkt:
Nog niet op kunnen lossen met de gegeven code?
 
Nee, sorry
Na
Code:
 Set wb2 = WorkBooks.Open (SecondFile)
verwijst ThisWorkbook naar wb2.
En na hetzelfde met wb3 verwijst ThisWorkbook naar wb3
 
Thisworkbook is waar de code staat.

Wat krijg je met:
Code:
msgbox Wb1.name
msgbox thisworkbook.name
 
Ik heb het even voor beide aangeroepen bestanden gedaan.
Inderdaad geeft wb2 en wb3 hun eigen naam en het oorspronkelijke bestand (wb1) blijft ThisWorkbook
 
Dan moet de "eventueel" code werken in mijn vorig schrijven.
 
Zodra ik maar 1 van de vorige MsgBox-en activeer komt wel wb1 weer in beeld, anders niet dan blijft de laatst aangeroepen wb3 in beeld

En ik gebruik bijvoorbeeld
Code:
 With ThisWorkbook.Sheets("Jan")
   .Activate
 
Laatst bewerkt:
Plaats de gehele code eens.
Kan ik een indruk krijgen wat je aan het doen bent.
 
Dit is de essentie van de subroutine

Code:
 Private Sub OpenBestanden()
Dim wb2 As Workbook, wb3 As Workbook
Dim FirstFile As String, SecondFile As String

 FirstFile = Application.GetOpenFilename(Title:="Kies eerste bestand")
Set wb1 = Workbooks.Open(FirstFile)
 SecondFile = Application.GetOpenFilename(Title:="Kies tweede bestand")
Set wb2 = Workbooks.Open(SecondFile)
ThisWorkbook.Sheets(1).Activate
End Sub

Nog even opgemerkt dat wb2 en wb3 niet hier, maar als public zijn gedeclareerd
 
Laatst bewerkt:
Werkt prima.
 
Heb nog wat zitten klooien, en nu werk het goed.
Ik heb twee regels gedeactiveerd, namelijk:
Code:
 Application.ScreenUpdating = False
direct na de dim statements (en dus voor FirstFile =) enz en
Code:
 Application.ScreenUpdating = True
voor ThisWorkbook.Activate

:d:d:d

Toch zou het toch niets moeten uitmaken?
 
Laatst bewerkt:
Gedeactiveerd is eruit gehaald.
Ik zie ze nergens in je code.

Half gebakken codes, half gebakken antwoorden.
 
Ja, sorry

Ik heb er meer regels uitgelaten die er totaal niet toe deden.
Maar bedankt voor alle hulp Harry!

En uh, ik ben natuurlijk niet voor niks VBAleerling :D
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan