VBA: Zwei Instanzen von Excel verwalten
Schritt-für-Schritt-Anleitung
Um in Excel mehrere Instanzen zu öffnen und eine zweite Instanz zu verwalten, kannst du die folgenden Schritte befolgen:
-
Öffne eine erste Instanz von Excel. Dies geschieht normalerweise automatisch, wenn du Excel startest.
-
Erstelle einen Button in deiner ersten Arbeitsmappe, der ein VBA-Skript ausführt, um eine zweite Instanz zu öffnen.
Private Sub cmdBaufinanzierung_Click()
Application.WindowState = xlMinimized
Me.Hide
Workbooks.Open "D:\Firma\Vorlagen\BKBaufi.xlsm"
End Sub
-
Schließe die zweite Instanz mit einem weiteren Button und einem speziellen VBA-Skript.
Sub cmdBKBaufi_schließen()
Dim sPfad As String
Dim iClick As Integer
sPfad = "D:\Firma\Backup\"
With ActiveWorkbook
.Save
iClick = MsgBox(prompt:="Möchten Sie eine Sicherungskopie anlegen?", Buttons:=vbYesNo)
If iClick = vbYes Then
.SaveCopyAs sPfad & ThisWorkbook.Name
End If
End With
If Workbooks.Count > 2 Then
ThisWorkbook.Close
Else
Application.Quit
End If
End Sub
-
Steuere die Anzeige eines UserForms in der ersten Instanz, nachdem die zweite Instanz geschlossen wurde.
Häufige Fehler und Lösungen
-
Fehler: Objekterstellung durch ActiveX-Komponente nicht möglich
Dieser Fehler kann auftreten, wenn das UserForm nicht korrekt geladen wird. Stelle sicher, dass der Code in der richtigen Datei vorhanden ist und dass die Datei nicht minimiert ist.
-
Fehler: UserForm öffnet sich nicht oder schließt sofort
Überprüfe, ob alle notwendigen Variablen und Sub-Prozeduren korrekt definiert sind. Ein falscher Aufruf kann dazu führen, dass das UserForm nicht wie gewünscht angezeigt wird.
-
Problematik mit der Sicherungskopie
Wenn die Option für die Sicherungskopie nicht benötigt wird, kannst du die Zeilen, die die Sicherungskopie anlegen, auskommentieren oder entfernen.
Alternative Methoden
-
Ereignisse verwenden: Nutze das Workbook_BeforeClose Ereignis, um Bedingungen zu überprüfen und entsprechend die zweite Datei zu steuern.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Deine Logik hier
End Sub
-
Verwenden von Application.OnTime: Dies kann nützlich sein, um Zeitverzögerungen einzuführen, bevor eine Aktion ausgeführt wird. Zum Beispiel:
Application.OnTime Now + TimeValue("00:00:01"), "BKKunde.xlsm!Anzeigen_frm_Kundenliste"
Praktische Beispiele
Öffnen einer zweiten Instanz: Du kannst Excel so programmieren, dass beim Klicken auf einen Button eine zweite Instanz geöffnet wird. Hier ist ein Beispielcode:
Private Sub cmdBaufinanzierung_Click()
Application.WindowState = xlMinimized
Me.Hide
Workbooks.Open "D:\Firma\Vorlagen\BKBaufi.xlsm"
End Sub
Schließen der zweiten Instanz: Wenn du die zweite Instanz schließen möchtest, kannst du den folgenden Code verwenden:
Sub cmdBKBaufi_schließen()
If Workbooks.Count > 2 Then
ThisWorkbook.Close
Else
Application.Quit
End If
End Sub
Tipps für Profis
-
Optimierung der Benutzererfahrung: Stelle sicher, dass der Benutzer eine klare Rückmeldung erhält, wenn er eine Sicherungskopie anlegen möchte. Verwende MsgBox für Bestätigungen.
-
Vermeide unnötige Minimierungen: Wenn du die Fenster minimierst, kann es zu Verwirrungen kommen. Halte die Fenster sichtbar, um eine bessere Benutzererfahrung zu gewährleisten.
-
Sicherungskopie Excel ausschalten: Wenn du keine Sicherungskopien erstellen möchtest, kannst du die entsprechenden Codezeilen auskommentieren oder entfernen.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Instanzen von Excel öffnen?
Du kannst dies erreichen, indem du verschiedene Excel-Dateien nacheinander öffnest oder ein VBA-Skript verwendest, das eine neue Instanz öffnet.
2. Was passiert, wenn ich eine zweite Instanz schließe?
Wenn du die zweite Instanz schließt, wird die erste nicht automatisch geschlossen, es sei denn, du hast es so programmiert.
3. Wie kann ich die Sicherungskopie in Excel deaktivieren?
Du kannst die Funktion zur Erstellung einer Sicherungskopie im VBA-Code einfach auskommentieren oder entfernen.