Makro per Makro starten in Excel VBA
Schritt-für-Schritt-Anleitung
Um ein Excel VBA Makro aus einem anderen Makro heraus zu starten, kannst du die folgenden Schritte befolgen:
-
Öffne die gewünschte Arbeitsmappe:
Verwende den Befehl Workbooks.Open
, um die Datei zu öffnen, in der sich das Makro befindet.
Workbooks.Open Filename:="D:\Verzeichnis\Dateiname1.xls"
-
Rufe das Makro auf:
Nutze Application.Run
, um das Makro in der geöffneten Datei auszuführen. Achte darauf, den korrekten Namen des Makros sowie den Dateinamen anzugeben.
Application.Run "'Dateiname1.xls'!Makro1_Name_Heute"
-
Schließe die Arbeitsmappe:
Nachdem das Makro ausgeführt wurde, kannst du die Arbeitsmappe schließen.
ActiveWorkbook.Close
-
Wiederhole den Vorgang:
Öffne die nächste Datei und führe das nächste Makro aus, indem du die Schritte 1 bis 3 wiederholst.
Häufige Fehler und Lösungen
-
Laufzeitfehler '1004':
Dieser Fehler tritt auf, wenn das Makro nicht gefunden werden kann. Überprüfe den Namen des Makros auf Tippfehler und stelle sicher, dass das Makro im richtigen Modul vorhanden ist.
-
Fehler beim Kompilieren:
Wenn du den Befehl Call
verwendest und die Fehlermeldung "Sub oder Function nicht definiert" erhältst, könnte das Makro nicht im richtigen Modul sein oder einen anderen Namen haben.
-
Dateinamen mit Leerzeichen oder Unterstrichen:
Stelle sicher, dass du den Dateinamen in Hochkommas setzt, wenn er Leerzeichen oder Unterstriche enthält.
Alternative Methoden
Eine alternative Methode besteht darin, das Makro direkt über den Namen anzusprechen, ohne Application.Run
zu verwenden:
Call Makro1_Name_Heute
Achte darauf, dass das Makro, das du aufrufst, im gleichen Modul oder in einem erreichbaren Modul definiert ist.
Praktische Beispiele
Hier ein Beispiel, wie du mehrere Makros in einer Schleife ausführen kannst:
Sub AlleStarten()
Dim wb As Workbook
Dim dateien As Variant
Dim i As Integer
dateien = Array("D:\Verzeichnis\Dateiname1.xls", "D:\Verzeichnis\Dateiname2.xls")
For i = LBound(dateien) To UBound(dateien)
Set wb = Workbooks.Open(Filename:=dateien(i))
Application.Run "'" & wb.Name & "'!Makro" & (i + 1) & "_Name"
wb.Close SaveChanges:=False
Next i
End Sub
Tipps für Profis
-
Verwende Error-Handling:
Füge Error-Handling in dein Makro ein, um unerwartete Fehler abzufangen:
On Error Resume Next
-
Modularisiere deinen Code:
Halte deinen Code sauber und modular, indem du verwandte Funktionen in separaten Modulen oder Klassen speicherst.
-
Dokumentiere deinen Code:
Kommentiere deinen Code, um die Verständlichkeit für andere (und zukünftige Du selbst) zu erhöhen.
FAQ: Häufige Fragen
1. Was mache ich, wenn das Makro nicht gefunden wird?
Überprüfe den Namen des Makros sowie die Schreibweise. Stelle sicher, dass das Makro im entsprechenden Modul vorhanden ist.
2. Kann ich ein Makro in einem anderen Workbook ausführen?
Ja, du kannst ein Makro in einem anderen Workbook ausführen, indem du den vollständigen Namen mit Dateipfad angibst.
3. Was ist der Unterschied zwischen Call
und Application.Run
?
Call
wird verwendet, um ein Makro direkt aufzurufen, während Application.Run
es ermöglicht, ein Makro aus einer anderen Datei oder einem anderen Modul auszuführen.