Makro in einem anderen Workbook aufrufen mit Parametern
Schritt-für-Schritt-Anleitung
Um ein Makro in einem anderen Workbook mit Parametern aufzurufen, kannst du die folgende Syntax verwenden:
-
Stelle sicher, dass das Workbook, welches das Makro enthält, geöffnet ist.
-
Verwende den Befehl Application.Run, um das Makro aufzurufen. Der allgemeine Aufbau sieht so aus:
Application.Run "WorkbookName.xls!MacroName", Parameter1, Parameter2, Parameter3
-
Beispiel für einen Aufruf mit Parametern:
Application.Run "Kanzlei.xls!HistorieSchreiben", ProzReg, strName, Rechnr, Dateiname
Achte darauf, dass die Parameter korrekt übergeben werden und dass die Klammern bei der Verwendung von Application.Run beachtet werden.
Häufige Fehler und Lösungen
-
Syntaxfehler:
- Wenn du einen Syntaxfehler erhältst, überprüfe die Verwendung von Klammern. Bei der Verwendung von
Application.Run sind Klammern erforderlich, wenn du die Rückgabe einer Funktion speichern möchtest, z.B.:
s = Application.Run("Kanzlei.xls!HistorieSchreiben", ProzReg, strName, Rechnr, Dateiname)
-
Makro nicht gefunden:
- Stelle sicher, dass der Name des Workbooks und das Makro korrekt geschrieben sind. Achte auch auf die Dateiendung und darauf, dass das Workbook geöffnet ist.
Alternative Methoden
Es gibt verschiedene Möglichkeiten, ein Makro aufzurufen:
-
Call-Anweisung:
Du kannst die Call-Anweisung verwenden, um ein Makro aufzurufen, wenn du nur ein Workbook verwendest:
Call HistorieSchreiben(ProzReg, strName, Rechnr, Dateiname)
-
Direkter Aufruf ohne Application.Run:
Wenn das Makro in dem aktuellen Workbook ist, kannst du es einfach so aufrufen:
HistorieSchreiben ProzReg, strName, Rechnr, Dateiname
Praktische Beispiele
Hier sind einige praktische Beispiele für die Verwendung von Application.Run:
-
Makro ohne Rückgabewert:
Application.Run "Kanzlei.xls!HistorieSchreiben", "Wert1", "Wert2", "Wert3", "Wert4"
-
Makro mit Rückgabewert:
Dim result As Variant
result = Application.Run("Kanzlei.xls!HistorieSchreiben", "Wert1", "Wert2", "Wert3", "Wert4")
Tipps für Profis
- Verwende
Call nur, wenn nötig: In vielen Fällen ist es einfacher, die Prozedur direkt aufzurufen, anstatt Application.Run zu verwenden. Dies macht den Code klarer und einfacher zu lesen.
- Parameter überprüfen: Stelle sicher, dass die übergebenen Parameter die korrekten Datentypen haben, um Laufzeitfehler zu vermeiden.
- Klammern beachten: Achte darauf, dass die Klammern richtig gesetzt sind, da sie die Funktionsweise des Aufrufs beeinflussen können.
FAQ: Häufige Fragen
1. Kann ich ein Makro aus einem geschlossenen Workbook aufrufen?
Nein, das Workbook muss geöffnet sein, um das Makro mit Application.Run aufzurufen.
2. Was passiert, wenn ich die falschen Parameter übergebe?
Wenn die Parameter nicht mit den erwarteten Datentypen übereinstimmen, kann es zu Laufzeitfehlern kommen. Überprüfe daher immer die Datentypen vor dem Aufruf.
3. Gibt es einen Unterschied zwischen Call und Application.Run?
Ja, Call wird verwendet, um ein Makro im aktuellen Workbook oder in einem anderen Workbook ohne Rückgabewert aufzurufen, während Application.Run auch Rückgabewerte verarbeiten kann und häufig für Makros in anderen Workbooks verwendet wird.