Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen

Sub eines anderen Workbooks ausführen

Betrifft: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 10:32:07

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

  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Hajo_Zi
Geschrieben am: 28.09.2014 10:35:33

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


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 12:04:48

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.


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Hajo_Zi
Geschrieben am: 28.09.2014 12:18:53

dann musst Du die Datei und Tabelle aktivieren.
Application.Run ("mappe3.xls!Start1")


Gruß Hajo


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 13:34:50

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


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Hajo_Zi
Geschrieben am: 28.09.2014 13:39:46

Ja Du kannst Diese Variable benutzen zum Aktivieren, das ist aber nur die Datei, Die Tabelle muss auch noch aktiviert werden.

Gruß Hajo


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 14:08:48

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


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Hajo_Zi
Geschrieben am: 28.09.2014 14:12:52

ich hätte es ja ohne Variable gemacht. Den Dateinamen und Tabelle hast Du ja.

Variable.Activate für die Datei.

Gruß Hajo


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 14:14:59

OK, und dann?


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Hajo_Zi
Geschrieben am: 28.09.2014 14:19:49

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


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 15:00:49

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.


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 16:56:18

"kannst Du das Makro Starten, wie schon mitgeteilt."

WIE kann ich das Makro starten?


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Adis
Geschrieben am: 28.09.2014 17:09:00

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


  

Betrifft: AW: Sub eines anderen Workbooks ausführen von: Barbara
Geschrieben am: 28.09.2014 20:59:42

Hallo adis,

genau das, was ich wollte.
Funktioniert perfekt.

Wieder was dazu gelernt.

Vielen herzlichen Dank.

LG,
Barbara


 

Beiträge aus den Excel-Beispielen zum Thema "Sub eines anderen Workbooks ausführen"