Makro einer anderen Datei ausführen lassen
Hallo alle,
ich habe die Dateien Mappe1.xls mit Makro1 und Mappe2.xls mit Makro2 im gleichen Verzeichnis. Makro1 ist einfach und funktioniert. Makro2 sieht folgendermaßen aus:
Sub Makro2()
dp = ActiveWorkbook.Path
dl = Left(dp, 3)
ChDrive dl
ChDir dp
name = "Mappe1.xls"
Workbooks.Open name
Application.Run "Mappe1.xls!Makro1"
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
End Sub
Makro2 in Mappe2 ruft also Makro1 in Mappe1 auf. Bis hierhin funktioniert alles bestens. Ich möchte Makro2 gern so verändern, dass auf beliebiege Dateien mit jeweils vorhandenem Makro1 zugegriffen werden kann.
Nun mein Problem: Wenn ich die Zeile
Application.Run "Mappe1.xls!Makro1"
ersetze durch
mak = Chr(34) & name & "!Makro1" & Chr(34)
Application.Run mak
funktioniert es nicht mehr!
Wer kann helfen?
Gruß peko
Antwort schreiben
Antwort 1 von meinTipp vom 22.02.2019, 08:12 Options
Hallo peko,
mak =name & "!Makro1"
definiert schon einen String.
Lasse den Rest weg.
Nur so als Anmerkung: verwende die Option Explicit und definiere die Typen deiner Variablen. Das vermeidet einige Fehler (z.B. Tippfehler).
Gruss Rolf
Antwort 2 von coros vom 22.02.2019, 08:27 Options
Hallo Peko,
lass die Chr()-Funktion am Anfang und Ende weg, dann funktionierts auch. Deine Befehlszeilen müssen dann wie folgt aussehen:
[b]mak = Name & "!Makro1"
Application.Run mak[/b]
Ich hoffe, Du kommst klar. Bei Fragen melde Dich wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von peko vom 23.02.2019, 15:43 Options
Hallo Rolf und Oliver,
ich danke Euch ganz herzlich. Eure Hinweise haben mir auf jeden Fall Zeit bei der Fehlersuche erspart.
Trotzdem bleibt etwas unklar: Bei
Application.Run "Mappe1.xls!Makro1"
steht der eigentliche String
Mappe1.xls!Makro1 doch auch noch zusätzlich in Anführungsstrichen!
???
Liebe Grüße
Peter