Externer Aufruf vom Makros in Arbeitsmappe (XL 2K, XP +)

28/09/2007 - 10:26 von Andreas Bruhn | Report spam
Hi allerseits,

ich habe hier eine Excel-Datei (A1.xls) in der es mehrere
Tabellenblàtter und eine Userform gibt mit einer VBA-Routine
"MachWas". Die Routine schiebt ein paar Daten umher und nutzt sich
selbst (die UserForm) als Fortschrittsanzeige.

Auf einem der Tab.Blàtter gibt es noch einen Button dessen
Click-Routine nur aus dem Aufruf der Routine MachWas besteht.

Funktioniert wunderbar.

Zum Testen (siehe folgenden Text) ist noch eine Routine
"ExternerAufruf" hinzugekommen (liegt im Moment in "Diese
Arbeitsmappe") die auch nur aus dem Aufruf von Machwas besteht.

Nun kommt das neue Problem: Jetz gibt es außerdem eine weitere
Excel-Datei "auswahl.xls" von der aus ich z.B. in A1.xls das Makro
Machwas aufrufen möchte.

Application.Run "D:\pfad nach\A1.xls!MachWas"

liefert nur die Fehlermeldung dass das Makro MachWas nicht gefunden
werden kann. Weil die in einer Userform steckt hatte ich es dann mit
der Routine "ExternerAufruf" ausprobiert, aber auch die kann nicht
gefunden werden.

Die Hilfe von Excel XP erzàhlt mir jetzt noch was von Makro-Vorlagen
"*.xlm". Muss ich die Makros umsortieren in eine xlm-Datei oder was?
Wie kann Machwas von draußen aufrufen?

Ich könnte mir auch vorstellen beim Öffnen von A1.xls etwas Code
auzuführen, der dann nach einer Hilfsdatei sucht und wenn diese
vorhanden ist automatisch das Makro MachWas ausführt und die
Hilfsdatei wieder löscht. Etwas indirekt, aber wenn es nicht anders
geht...

Wer hat sachdienliche Ideen und Vorschlàge?

Danke und Tschüss,
Andreas
 

Lesen sie die antworten

#1 stefan onken
28/09/2007 - 20:52 | Warnen spam
hallo Andreas,
Application.Run sucht nach dem Makro in einem Standardmodul (im
VBA-Editor nach Einfügen/Modul vorhanden), wenn das Makro im Codemodul
einer Tabelle/UserForm steckt, wird es so nicht gefunden. Ausserdem
fehlen noch die '. Entweder rufst du also ein Makro in einem
Standardmodul auf
Application.Run "'D:\pfad nach\A1.xls'!MachWas"
oder probierst mal, in Application.Run das Codemodul mit einzufügen,
etwa
Application.Run "'D:\pfad nach\A1.xls'!UserForm1.machwas"

Gruß
stefan

Andreas Bruhn wrote:
Hi allerseits,

ich habe hier eine Excel-Datei (A1.xls) in der es mehrere
Tabellenblàtter und eine Userform gibt mit einer VBA-Routine
"MachWas". Die Routine schiebt ein paar Daten umher und nutzt
sich selbst (die UserForm) als Fortschrittsanzeige.

Auf einem der Tab.Blàtter gibt es noch einen Button dessen
Click-Routine nur aus dem Aufruf der Routine MachWas besteht.

Funktioniert wunderbar.

Zum Testen (siehe folgenden Text) ist noch eine Routine
"ExternerAufruf" hinzugekommen (liegt im Moment in "Diese
Arbeitsmappe") die auch nur aus dem Aufruf von Machwas besteht.

Nun kommt das neue Problem: Jetz gibt es außerdem eine weitere
Excel-Datei "auswahl.xls" von der aus ich z.B. in A1.xls das
Makro Machwas aufrufen möchte.

Application.Run "D:\pfad nach\A1.xls!MachWas"

liefert nur die Fehlermeldung dass das Makro MachWas nicht
gefunden werden kann. Weil die in einer Userform steckt hatte
ich es dann mit der Routine "ExternerAufruf" ausprobiert, aber
auch die kann nicht gefunden werden.

Die Hilfe von Excel XP erzàhlt mir jetzt noch was von
Makro-Vorlagen "*.xlm". Muss ich die Makros umsortieren in
eine xlm-Datei oder was? Wie kann Machwas von draußen aufrufen?

Ich könnte mir auch vorstellen beim Öffnen von A1.xls etwas
Code auzuführen, der dann nach einer Hilfsdatei sucht und wenn
diese vorhanden ist automatisch das Makro MachWas ausführt und
die Hilfsdatei wieder löscht. Etwas indirekt, aber wenn es
nicht anders geht...

Wer hat sachdienliche Ideen und Vorschlàge?

Danke und Tschüss,
Andreas

Ähnliche fragen