Hallo,
ich möchte über ein Makro eine andere Excel-Tabelle aufrufen und ein dort gespeichertes Makro ausführen lassen.
Dabei gibt es ein Problem mit
Application.Run ()
Was genau muss eigentlich als Argument in die Klammern? Dieser Befehl verursacht immer einen Fehler!
Mein Quellcode:
Sub speicherndatum00000000()
’
’ speicherndatum00000000 Makro
’ Makro am 13.09.2007 von arzt aufgezeichnet
’
’
Range(„B8:B28“).Select
Selection.Cut
ChDir „C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST“
Workbooks.Open Filename:= _
„C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST\Datum00000000.xls“
Range(„B7“).Select
ActiveSheet.Paste
Windows(„EintragungDatum00000000.xls“).Activate
Range(„E5“).Select
Selection.Copy
Windows(„Datum00000000.xls“).Activate
Range(„E5“).Select
ActiveSheet.Paste
Application.Run Range()
ActiveWindow.Close
End Sub
Also soweit ich das beurteilen kann, fehlt wahrscheinlich nur der „Pfad“ des auszuführenden Makros - aber wie kriege ich den da rein, sodass das dann auch funktioniert? Habe einiges ausprobiert, scheine aber nicht die richtige „Formulierung“ gefunden zu haben.
Interessant ist übrigens, das das Ganze beim Aufzeichnen problemlos funktioniert (das zweite Makro wird ausgeführt) aber scheinbar der „Pfad“ des auszuführenden Makros nicht mit aufgezeichnet wird.
Danke für die Hilfe,
Lucas Sichardt
Hallo,
Sub beispiel()
Workbooks.Open Filename:="Y:\zweiteDatei.xls"
Application.Run "zweiteDatei.xls!NameDeinesMakros"
End Sub
Gruß, Bernd
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
Sub beispiel()
Workbooks.Open Filename:=„Y:\zweiteDatei.xls“
Application.Run „zweiteDatei.xls!NameDeinesMakros“
End Sub
Gruß, Bernd
Danke schonmal dafür, jetzt scheint er das richtige zu versuchen. Aber nun bekomme ich den Fehler, dass das Makro nicht gefunden werden könnte (Laufzeitfehler 1004). Das Makro ist aber hundertprozentig vorhanden! Ich habe auch schon mit Groß- und Kleinschreibung experimentiert - aber daran liegts nicht.
Ich wäre dankbar für weitere Tipps, wie ich dem Rechner klar machen kann, dass das Makro da ist…
Gruß,
Lucas Sichardt
Hallo,
Sub beispiel()
Workbooks.Open Filename:=„Y:\zweiteDatei.xls“
Application.Run „zweiteDatei.xls!NameDeinesMakros“
End Sub
Gruß, Bernd
Danke schonmal dafür, jetzt scheint er das richtige zu
versuchen. Aber nun bekomme ich den Fehler, dass das Makro
nicht gefunden werden könnte (Laufzeitfehler 1004). Das Makro
ist aber hundertprozentig vorhanden! Ich habe auch schon mit
Groß- und Kleinschreibung experimentiert - aber daran liegts
nicht.
Hi Lucas,
hat das Makro Parameter?
Ist jetzt unklar mit welchem Code du testest, zeige den mal.
Und benutze bitte keine dem Debugger bekannte Namen wie „Range“ bei der Namensvergabe. Irritiert beim Lesen sehr und evtl. auch den Debugger.
Gruß
Reinhard
Sub speicherndatum00000000()
’
’ speicherndatum00000000 Makro
’ Makro am 13.09.2007 von arzt aufgezeichnet
’
’
Range(„B8:B28“).Select
Selection.Cut
ChDir „C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST“
Workbooks.Open Filename:= _
„C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST\Datum00000000.xls“
Range(„B7“).Select
ActiveSheet.Paste
Windows(„EintragungDatum00000000.xls“).Activate
Range(„E5“).Select
Selection.Copy
Windows(„Datum00000000.xls“).Activate
Range(„E5“).Select
ActiveSheet.Paste
Application.Run "C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST\Datum00000000.xls!Speichern "
ActiveWindow.Close
End Sub
Gruß, Lucas
Hi Lucas,
wegen Select, paste activate für mich schwierig zu lesender Code, funktioniert denn das:
Option Explicit
Sub speicherndatum00000000()
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST\Datum00000000.xls"
'Schneidet aus aktiver Mappe aus und fügt in Datum00000000.xls ein:
With ThisWorkbook.Worksheets("Tabelle1")
.Range("B8:B28").Cut Destination:=ActiveWorkbook.Worksheets("Tabelle").Range("B7")
End With
'Kopiert von EintragungDatum00000000.xls nach Datum00000000.xls:
With Workbooks("EintragungDatum00000000.xls").Worksheets("Tabelle1")
ActiveWorkbook.Worksheets("Tabelle1").Range("E5") = .Range("E5")
End With
Application.Run "C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST\Datum00000000.xls!Speichern "
Workbooks("EintragungDatum00000000.xls").Close savechanges:=True
Workbooks("Datum00000000.xls").Close savechanges:=True
End Sub
Hallo,
kann leider erst am Montag wieder probieren, da ich zu Hause kein Excel habe.
Was ich eigentlich erreichen will, ist folgendes:
Ich möchte einige Zellen aus einem Eingabeformular (1. Excel-Datei) per Makro in eine zweite Excel-Datei einfügen (hier Datum00000000.xls) einfügen. Datum00000000 ist dabei ein Muster, denn nach dem Einfügen soll das Ganze als dritte Excel-Datei (z. B. Datum20070915) gespeichert werden, sodass Datum00000000 leer bleibt und für die nächste Eintragung als Muster zur Verfügung steht.
Das Ganze ist nur ein Test, damit ich später das Ganze mit Patientendaten machen kann. Dabei soll möglichst verhindert werden, dass es Simultanzugriffe mit den verbundenden Schreibschutzschwierigkeiten gibt. Daher die verschiedenen Excel-Dateien für Eingabe und eigentlichen Speicherort.
Zu beachten ist vielleicht noch, dass später der Dateiname nicht unbedint durch das Datum festgelegt werden wird. Eventuell wird das auch der Patientenname sein oder der Name der eintragenden Station.
Das Ganze nur als Hintergrundinformation, warum ich das alles so machen will, wie ich es versuche…
Danke auf jeden Fall schonmal bis hier für die Bemühungen - ich werde am Montag weiter experimentieren…
Gruß,
Lucas
Hallo,
leider funktioniert es einfach nicht. Ich bekomme imemr den Fehler, dass er das Makro nicht finden könne!
Woran kann das nur liegen? Der Pfad muss eigentlich stimmen, denn die Excel-Datei, in der das Makro steckt, öffnet er ja problemlos…
Gruß, Lucas
leider funktioniert es einfach nicht. Ich bekomme imemr den
Fehler, dass er das Makro nicht finden könne!
Woran kann das nur liegen? Der Pfad muss eigentlich stimmen,
denn die Excel-Datei, in der das Makro steckt, öffnet er ja
problemlos…
Hi Lucas,
steht das Makro in einem (Standard-) Modul z.B. Modul1, siehst du es in Extras–Makros–Makro ?
Grundsätzlich, bei so langen Pfaden (hat jetzt nix mit dem Fehler zu tun, aber z.B. mit Fehlersuche, Überblick), besser so:
Sub speicherndatum00000000()
Dim Pfad As String
Pfad = „C:\Dokumente und Einstellungen\arzt\Eigene Dateien\Zivi\Projekte\TEST“
Workbooks.Open Filename:=Pfad & „Datum00000000.xls“
'Schneidet aus aktiver Mappe aus und fügt in Datum00000000.xls ein:
With ThisWorkbook.Worksheets("Tabelle1")
.Range("B8:B28").Cut Destination:=ActiveWorkbook.Worksheets("Tabelle").Range("B7")
End With
'Kopiert von EintragungDatum00000000.xls nach Datum00000000.xls:
With Workbooks("EintragungDatum00000000.xls").Worksheets("Tabelle1")
ActiveWorkbook.Worksheets("Tabelle1").Range("E5") = .Range("E5")
End With
Application.Run Pfad & „Datum00000000.xls!Speichern“
Workbooks(„EintragungDatum00000000.xls“).Close savechanges:=True
Workbooks(„Datum00000000.xls“).Close savechanges:=True
End Sub
Gruß
Reinhard
Hallo Reinhard,
ich habe mal nachgesehen: Das Makro ist in Modul1 und ist auch über Extras-Makros… zu sehen.
Das mit der Abkürzung bei den Pfaden ist ein guter Tipp, danke dafür! Das macht mir die Sache sicher in Zukunft auch etwas übersichtlicher, zumal ich nicht wusste, wie man solche Platzhalter einführt.
Aber warum der Fehler jedesmal auftritt, weiß ich immer noch nicht. Ich verzweifle daran mittlerweile fast. Das muss doch irgendwie machbar sein!
Gruß,
Lucas