Sub eines anderen Workbooks ausführen: So geht's!
Schritt-für-Schritt-Anleitung
Um ein Makro aus einem anderen Workbook in Excel auszuführen, kannst Du folgende Schritte befolgen. In diesem Beispiel wird das Makro FoodCheckBox_clicked()
aus einer Datei namens A.xls
in einem anderen Workbook B.xls
aufgerufen.
- Öffne beide Workbooks: Stelle sicher, dass sowohl
A.xls
als auch B.xls
geöffnet sind.
- Aktiviere das externe Workbook: Du musst das Workbook aktivieren, bevor Du das Makro aufrufst.
- Aktiviere das spezifische Blatt: Du musst auch das Blatt aktivieren, in dem das Makro existiert.
- Führe das Makro aus: Benutze
Application.Run
, um das gewünschte Makro zu starten.
- Kehre zurück: Du kannst zum ursprünglichen Workbook zurückkehren.
Hier ist ein Beispielcode, den Du in Dein Makro in B.xls
einfügen kannst:
Sub ExternesMakro_aufrufen()
Dim ThisWbk As String, Blatt As String
ThisWbk = ThisWorkbook.Name
' Aktiviere externes Workbook, notiere aktives Blatt
Windows("A.xls").Activate
Blatt = ActiveSheet.Name
' Das Blatt aktivieren in dem das Makro laufen soll
Sheets("Tabelle1").Select ' Hier das Blatt anpassen, wo das Makro ist
Application.Run ("'A.xls'!FoodCheckBox_clicked")
' Rückkehr in notierte Blatt (in extern Workbook)
Sheets(Blatt).Select
' Rückkehr in dieses Workbook
Windows(ThisWbk).Activate
End Sub
Häufige Fehler und Lösungen
- Error 1004: Anwendungs- oder Objektfehler: Dieser Fehler tritt auf, wenn das angegebene Workbook oder Blatt nicht korrekt aktiviert wird. Stelle sicher, dass die Namen genau stimmen.
- Makro wird nicht gefunden: Vergewissere Dich, dass das Makro im angegebenen Workbook existiert und die Datei tatsächlich geöffnet ist.
- ActiveSheet ist nicht definiert: Wenn das externe Workbook nicht aktiv ist, kann Excel das ActiveSheet nicht erkennen. Stelle sicher, dass Du das Workbook aktivierst, bevor Du das Makro aufrufst.
Alternative Methoden
Eine weitere Möglichkeit, ein Makro aus einem anderen Workbook zu starten, ist die Verwendung von Workbook
-Objekten. Hier ein Beispiel:
Sub MakroMitWorkbook()
Dim wkb As Workbook
Set wkb = Workbooks("A.xls")
Application.Run "'" & wkb.Name & "'!FoodCheckBox_clicked"
End Sub
Diese Methode erfordert, dass Du das Workbook bereits mit einer Variablen referenziert hast, was die Lesbarkeit des Codes verbessert.
Praktische Beispiele
Ein einfaches Beispiel für das Ausführen eines Makros aus einem anderen Workbook könnte sein:
Sub Beispiel()
Dim wkb As Workbook
Set wkb = Workbooks("A.xls")
' Aktiviere das Workbook und das spezifische Blatt
wkb.Activate
wkb.Sheets("Tabelle1").Activate
' Führe das Makro aus
Application.Run "'" & wkb.Name & "'!FoodCheckBox_clicked"
End Sub
Dieses Beispiel zeigt, wie Du das Makro effizient aufrufen kannst, indem Du sicherstellst, dass sowohl das Workbook als auch das Blatt korrekt aktiviert sind.
Tipps für Profis
- Verwende
With
-Anweisungen: Das macht Deinen Code sauberer und vermeidet wiederholte Referenzen.
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler abzufangen und den Code robuster zu gestalten.
- Dokumentation: Kommentiere Deinen Code mit Erklärungen, um die Wartbarkeit zu erhöhen und anderen (oder Dir selbst) zu helfen, den Code später besser zu verstehen.
FAQ: Häufige Fragen
1. Kann ich ein Makro aus einem geschlossenen Workbook aufrufen?
Nein, Du musst das Workbook geöffnet haben, um ein Makro darin auszuführen.
2. Was passiert, wenn das Makro nicht funktioniert?
Überprüfe die Namen von Workbook und Blatt. Stelle sicher, dass das Makro tatsächlich im angegebenen Workbook existiert und keine Schreibfehler vorliegen.
3. Ist es notwendig, das externe Workbook aktiv zu machen?
Ja, Du musst das externe Workbook aktivieren, um sicherzustellen, dass das richtige ActiveSheet verwendet wird.