Sluiten workbook en openen van een ander workboek

  • Onderwerp starter Onderwerp starter Jemp
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Jemp

Gebruiker
Lid geworden
18 feb 2012
Berichten
145
Hallo Helpers

Ik zit met een VBA probleem in Excel (anders zou ik hier niks posten natuurlijk :)).

Ik wil graag een VBA Code (verbonden aan een knop) maken die een bestandje opent (met de naam : Test.xlsm) en daarna het oude workbook (waarin de bewuste knop staat) afsluit.
Met volgende code (verbonden aan de bewuste knop) dacht ik het probleem te kunnen oplossen
Code:
Workbooks.Open (ThisWorkbook.Path & "\" & "Test.xlsm")
ThisWorkbook.Close SaveChanges:=True

Het nieuwe bestandje openen lukt maar is ook oorzaak van het probleem omdat in dat bestand volgende code is opgenomen

Code:
Private Sub Workbook_Open()
frmScherm.mpScherm.Value = 0
frmScherm.Show
End Sub

Het gevolg hiervan is dat VBA in het nieuwe bestand actief blijft en de laatste regel (ThisWorkbook.Close SaveChanges:=True) voorzien in het oude workbook niet meer uitvoert zodat dit bestand niet gesloten wordt.

Iemand een idee?

Alvast bedankt voor de moeite
JP
 
Dag Jemp !

Dit is een mogelijke oplossing, maar ik weet niet of ze voor uw doel geschikt is.

In de macro in het eerste bestand (oude) alleen de code om het nieuwe bestand (test.xls) te openen:

Code:
Sub openAnotherWorkbook()
Workbooks.Open (ThisWorkbook.Path & "\" & "Test.xls")
End Sub

In de module "Thisworkbook" van het nieuwe bestand (test.xls) de code om de Userform te tonen:

Code:
Private Sub Workbook_Open()
UserForm1.Show
End Sub

In de code van de Userform bij "Activate", de code om het eerste bestand (oude te sluiten):

Code:
Private Sub UserForm_Activate()
On Error Resume Next
Workbooks("OUD.XLS").Close
End Sub

Opmerking: de eigenschap ShowModal van de Userform moet op False staan.

Grtz,
MDN111
 

Bijlagen

Laatst bewerkt:
Hallo MDN111

Tx voor het snelle en accurate antwoord.
Wat jij voorstelt doet perfect wat ik verwacht.
Momenteel werkt het in mijn bestand echter nog niet (Userform ShowModal staat op False!). Ik krijg steeds de fout 9 (Subscript valt buiten bereik).
Ik speur nog wat verder.

Groetjes
JP
 
Staan de bestanden in hetzelfde pad?
Is de bestandsnaam in de code gelijk aan de bestandsnaam?
 
Harry

Heb hier wat zitten uitproberen en ben tot de conclusie gekomen (denk ik) wat het probleem veroorzaakt.
Om een duistere reden wordt een nieuwe exceltoepassing opgestart wanneer de file test.xls geopend wordt.
We kunnen dus stellen dat op dat ogenblik de file oud.xls niet meer gevonden wordt om hem te sluiten en ik dus de fout 9 te zien krijg.

Nu nog uitzoeken waarom de file test.xls bij mij in een nieuwe toepassing geopend wordt.

:confused:

Groetjes
JP
 
Dag allen,

Bij het testen stuitte ik ook op een subscript error en dat was toen ik het bestand Test.xls gewoon opende. De code bij het activeren van de Userform wil dan het bestand Oud.xls sluiten maar vind dat niet. Maar dat wordt opgevangen door On Error Resume Next.

Wat ik zelf wel graag had geweten is het volgende: Als de ShowModal property van de Userform op True staat werkt de macro ook. Dat wil zeggen, het bestand Test.xls wordt geopend en het bestand Oud.xls wordt gesloten. Maar bij het openen van Test.xls wordt de Userform niet getoond. Iemand een idee waarom dat zo is ?

Grtz,
MDN111
 
Zet in Test.xls:
Code:
Private Sub Workbook_Open()
 UserForm1.Show vbModeless
End Sub
In Oud.xls:
Code:
Sub openAnotherWorkbook()
Workbooks.Open (ThisWorkbook.Path & "\" & "Test.xls")
 ThisWorkbook.Close True
End Sub
 
Allen

Bedankt voor de reacties en de aangeleverde oplossing

Groetjes
JP
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan