Makro aus anderer Datei aufrufen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Makro aus anderer Datei aufrufen
von: Dennis Zach
Geschrieben am: 27.10.2003 10:43:16

Hallo Alle!

Ich möchte aus einer Datei_A eine andere Datei_B öffnen und dann ein Makro der Datei_B laufen lassen. Wie muss denn da der Aufruf erfolgen.

Öffnen tue ich so:
Workbooks.Open Filename:= _
"\\ordner1\ordner2\Datei_B.xls" , UpdateLinks:=0

'und jetzt brauch ich hier den Aufruf für die Methode Graphik_erstellen

Ich dachte nach dem Öffnen der Datei_B wäre sie aktiv und man könnte die Methode einfach mit der Namensangabe aufrufen, aber das funktioniert nicht (Sub oder Funktion nicht definiert)

Kann mir jemand helfen?
Dennis

Bild


Betrifft: Application.Run
von: ChrisL
Geschrieben am: 27.10.2003 10:47:01

Hi Dennis

Application.Run "Mappe!Makro"

Gruss
Chris


Bild


Betrifft: AW: Application.Run
von: Danke! .. und noch ne Frage ;-)
Geschrieben am: 27.10.2003 11:00:55

Hey Chris,

danke...
Hab da noch ne Frage, also falls Du Zeit hast, wär ich Dir sehr dankbar:

Das Makro, das ich aufrufe, öffnet ein Formular, das vom Benutzer die Auswahl eines Monats und eines Jahres verlangt, um weiterrechnen zu können.
Wie kann ich das Makro mit Application.Run"Datei_B!Makro1"
aufrufen und schon feste Werte für Monat und Jahr mitgeben, so dass das Öffnen des Formulars nicht geschehen muss?!

Geht das?

Hintergrund ist folgendes:

Datei_A muss nacheinander insgesamt 15(vom Aufbau gleiche)Dateien öffnen und jeweils das Makro ausführen und immer mit dem gleichen Monat und Jahr.
Ich möchte natürlich vermeiden, dass der Ausführer des Makros 15x hintereinander die Auswahl treffen muss, und evtl. auch mal was falsches auswählt...
Ich möchte gerne einmal vorneweg die Monats- und Jahresauswahl treffen, diese Werte speichern und sie jedesmal, sozusagen als Parameter an das Makro übergeben.

Kannst Du mir folgen und was raten?

Dennis


Bild


Betrifft: Public Variable
von: ChrisL
Geschrieben am: 27.10.2003 11:21:16

Hi Dennis

Es gibt verschiedene Wege, um Variablen von einer Prozedur in die andere zu übergeben, z.B. so...

Option Explicit


Sub TEST1(strMonat As String, intJahr As Integer)
MsgBox strMonat & " " & intJahr
End Sub



Sub TEST2()
Call TEST1("Januar", 2003)
End Sub



Da du allerdings sagst, dass du 15 verschiedene Prozeduren ansprichst, ist vermutlich das einfachste, wenn du die Variablen als Public (in einem Standardmodul) deklarierst...

Public strMonat As String

Gruss
Chris


Bild


Betrifft: Geht's auch so?
von: Dennis
Geschrieben am: 27.10.2003 11:43:50

Hey Chris,

ich hab mir gedacht ich mach das so:

Sub Makro1(Optional datumsvariable as Variant)
'jetzt will ich hier ne Abfrage machen:
'IF Parameterübergeben: dann benutze ihn,
'ELSE zeige das Auswahlformular

If IsEmpty(datumsuebergabe) Then

Monatswahl.Show
Else 'Es wurde ein Datum als Parameter übergeben, also benutze diesen Wert
gewaehlter_monat = datumsuebergabe
End If

Exit Sub

Problem ist aber, dass er das nicht akzeptiert, wenn kein Parameter übergeben wird.
datumsuebergabe ist dann ja leer und ich krieg für die vorvorletzte Zeile immer die Meldung: Typen unverträglich.

Wie kann ich denn das umgehen, dann wär der Rest nämlich (glaub ich zumindest) recht einfach...

Dennis


Bild


Betrifft: AW: Geht's auch so?
von: ChrisL
Geschrieben am: 27.10.2003 11:58:25

Hi Dennis

Leider habe ich den Überblick betr. deinem Projekt nicht ganz. Hast du von der Struktur her eine art 'Master-Prozedur' aus der heraus du die 15 anderen Prozeduren aufrufst d.h.

Master ruft Prozedur 1 auf
Master ruft Prozedur 2 auf
etc.

oder

Master ruft Prozedur 1 auf
Prozedur 1 ruf Prozdur 2 auf
etc.

Ich frage mich nämlich, wieso du die Datumseingabe nicht einfach im 'Master' erzwingst, dann ist das Argument nicht mehr optional. Ferner würdest du dir Code sparen, da du nicht in jeder Prozdedur einzeln die Abfrage machen musst.

Gruss
Chris


 Bild

Beiträge aus den Excel-Beispielen zum Thema " Makro aus anderer Datei aufrufen"