Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sub eines anderen Workbooks ausführen

Forumthread: Sub eines anderen Workbooks ausführen

Sub eines anderen Workbooks ausführen
28.09.2014 10:32:07
Barbara

Hallo
Wie kann man Folgendes anstellen:
Mein Makro soll "FoodCheckBox_clicked()" (siehe Beispiel unten), das in einem zweiten, bereits geöffnetem workbook steht, dort ausführen.
Auf dieses Workbook habe ich bereits mit wkb (Dim wkb As Workbook) Zugriff.

Sub FoodCheckBox_clicked()
ActiveSheet.Unprotect Password:="S4"
If ActiveSheet.Shapes("FoodCheckBox").ControlFormat.Value = 1 Then
Range("147:148").EntireRow.Hidden = True
Range("FoodControlField").Value = 0
Else
Range("147:148").EntireRow.Hidden = False
Range("FoodControlField").Value = 1
End If
ActiveSheet.Protect Password:="S4"
End Sub
Dieses Makro soll selbstverständlich in seinem eigenen workbook, in dem es steht, ausgeführt werden.
Wie geht das am Besten?
LG,
Barbara

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 10:35:33
Hajo_Zi
Hallo Babara,
ist die Datei nicht Aktiv, gibt es kein ActiveSheet in der Datei. Du solltest im Code schon die Tabelle ansprechen mit ThisWorkbook.
Gruß Hajo

AW: Sub eines anderen Workbooks ausführen
28.09.2014 12:04:48
Barbara
Hätte vielleicht noch dazu sagen müssen:
Der abgedruckte Code ist unveränderbar, weil es eine Fremddatei ist.
Ich rufe diese Datei auf und befülle sie per Makro mit Daten aus meinem Sheet.
Und hier will ich das Anklicken einer Checkbox simulieren, indem ich gleich das damit verbundene Makro aufrufe.

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 12:18:53
Hajo_Zi
dann musst Du die Datei und Tabelle aktivieren.
Application.Run ("mappe3.xls!Start1")
Gruß Hajo

AW: Sub eines anderen Workbooks ausführen
28.09.2014 13:34:50
Barbara
OK, Und dann?
Und dann muss ich wieder meine Datei aktivieren?
Kann ich da nicht die eingangs definierte Variable wkb (siehe erste Nachricht) nutzen?
LG,
Barbara

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 13:39:46
Hajo_Zi
Ja Du kannst Diese Variable benutzen zum Aktivieren, das ist aber nur die Datei, Die Tabelle muss auch noch aktiviert werden.
Gruß Hajo

AW: Sub eines anderen Workbooks ausführen
28.09.2014 14:08:48
Barbara
Danke,
für mich würde es schon reichen, wenn Du mir konkret zeigen könntest, wie diese Zeilen lauten.
Dann kann ich auch die Grundlagen nachvollziehen (versuchen).
LG,
Barbara

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 14:12:52
Hajo_Zi
ich hätte es ja ohne Variable gemacht. Den Dateinamen und Tabelle hast Du ja.
Variable.Activate für die Datei.
Gruß Hajo

AW: Sub eines anderen Workbooks ausführen
28.09.2014 14:14:59
Barbara
OK, und dann?

AW: Sub eines anderen Workbooks ausführen
28.09.2014 14:19:49
Hajo_Zi
was soll mir das sagen?
Schaue in Deinen ersten Beitrag. Nach Aktivierung der Datei und der Tabelle, kannst Du das Makro Starten, wie schon mitgeteilt.
Gruß Hajo

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 15:00:49
Barbara
Das abgedruckte Makro von oben namens FoodCheckBox_clicked(), das in "A.xls", Blatt1 steht, soll innerhalb eines Makros, das in "B.xls" aufgerufen werden.
Wie lauten die Zeilen dazu, die ich ins Makro, das in "B.xls" steht, schreiben soll?
"A.xls" ist bereits geöffnet.

AW: Sub eines anderen Workbooks ausführen
28.09.2014 16:56:18
Barbara
"kannst Du das Makro Starten, wie schon mitgeteilt."
WIE kann ich das Makro starten?

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 17:09:00
Adis
Hallo
die Lösungsvorschlaege sind gut, ich glaube es habert an der -praktischen umsetzung-
Hier ein Lösungsvoschlag von mir. Mein Makro schaltet auf das externe Workbook um,
führt die vorgeschlagene Run Operation aus, und kehrt in -dieses Workbook- zurück.
Zu beachten ist das im externen Workbook auch das AktiveSheet selektiert werden muss,
sonst wird das "FoodCheckBox_clicked" Makro evtl. in einem -falschen Blatt- ausgeführt!
Mein Makro merkt sich das ausgewehlte Blatt, schaltet um, und kehrt ins Blatt zurück.
Geaendert werden muss 2x der Workbbook Name, bei mir zum Test: "Workbook extern.xls"
sowie das Aktive Blatt für: FoodCheckBox_clicked (bei mir zum testen "Tabelle 2")
In ein normales Modulblatt kopieren und testen ob es so wie gewünscht funktioniert.
Sub ExternesMakro_aufrufen()
Dim ThisWbk As String, Blatt As String
ThisWbk = ThisWorkbook.Name
'Aktiviere externes Workbbook, notiere aktives Blatt
Windows("Workbook extern.xls").Activate
Blatt = ActiveSheet.Name
'Das Blatt aktivieren in dem das Makro laufen soll !!
Sheets("Tabelle2").Select  'Aktives Blatt für: FoodCheckBox_clicked
Application.Run ("'Workbook extern.xls'!FoodCheckBox_clicked")
'Rückkehr in notierte Blatt  (in extern Workbook)
Sheets(Blatt).Select
'Rückkehr in dieses Workbook
Windows(ThisWbk).Activate
End Sub
Gruss Adis

Anzeige
AW: Sub eines anderen Workbooks ausführen
28.09.2014 20:59:42
Barbara
Hallo adis,
genau das, was ich wollte.
Funktioniert perfekt.
Wieder was dazu gelernt.
Vielen herzlichen Dank.
LG,
Barbara

;
Anzeige

Infobox / Tutorial

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.

  1. Öffne beide Workbooks: Stelle sicher, dass sowohl A.xls als auch B.xls geöffnet sind.
  2. Aktiviere das externe Workbook: Du musst das Workbook aktivieren, bevor Du das Makro aufrufst.
  3. Aktiviere das spezifische Blatt: Du musst auch das Blatt aktivieren, in dem das Makro existiert.
  4. Führe das Makro aus: Benutze Application.Run, um das gewünschte Makro zu starten.
  5. 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

  1. 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.
  2. Makro wird nicht gefunden: Vergewissere Dich, dass das Makro im angegebenen Workbook existiert und die Datei tatsächlich geöffnet ist.
  3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige