Discussion:
VBA- Datei öffnen und VBA-Programme ausführen lassen !?
(zu alt für eine Antwort)
Michael Klein
2005-07-07 12:53:22 UTC
Permalink
Hi,

ich möchte eine Excel-Datei öffnen und anschließend ein ganz bestimmtes
VBA-Programm ausführen lassen.
Hier der Code:

"
...
Sub Datei_Öffnen()

Workbooks.Open "C:\Dokumente und Einstellungen\admin\Desktop\Test_2.xls"
ActiveWorkbook.RunAutoMacros "xlHello2"

End Sub
...
"

Leider klappt es nicht.
Der Name des VBA-Programms lautet "Hello2".
Ich bekomme eine Fehlermeldung, daß die Typen unverträglich wären.

Für jeden Tipp dankbar
Gruß aus Potsdam
Stefan Onken
2005-07-07 20:49:21 UTC
Permalink
hallo Michael,

mit RunAutoMacros startest du Makros, die Auto_Open bzw Auto_Close
heissen. Solche Makros werden dann beim öffnen bzw schliessen der
Exceldatei automatisch abgearbeitet.
Mehr Info: im VBA-Editor den Cursor in das Wort stellen und F1 drücken.

Ein Makro aus einer anderen Datei zu starten geht im Prinzip so:
Workbooks.Open "D:\Mappe1.xls"
Application.Run "Mappe1.xls!makro1"

also:
Workbooks.Open "C:Dokumente und Einstellungen\admin\Desktop\Test_2.xls"
Application.Run "test2.xls!Hello2"

bzw auch

Application.Run "'C:Dokumente und _
EinstellungenadminDesktopTest_2.xls'!Hello2"

Die Datei wird so automatisch geöffnet, wenn sie noch nicht geöffnet ist.


Gruß
stefan
Post by Michael Klein
Hi,
ich möchte eine Excel-Datei öffnen und anschließend ein ganz bestimmtes
VBA-Programm ausführen lassen.
"
....
Sub Datei_Öffnen()
Workbooks.Open "C:\Dokumente und
Einstellungen\admin\Desktop\Test_2.xls"
ActiveWorkbook.RunAutoMacros "xlHello2"
Post by Michael Klein
End Sub
....
"
Leider klappt es nicht.
Der Name des VBA-Programms lautet "Hello2".
Ich bekomme eine Fehlermeldung, daß die Typen unverträglich wären.
Für jeden Tipp dankbar
Gruß aus Potsdam
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Dieter Urban
2005-07-08 06:46:17 UTC
Permalink
Post by Stefan Onken
hallo Michael,
Application.Run "'C:Dokumente und _
EinstellungenadminDesktopTest_2.xls'!Hello2"
Die Datei wird so automatisch geöffnet, wenn sie noch nicht geöffnet ist.
Und wie fängt man die Fehlermeldung ab, wenn sie schon offen ist ?

Dieter
Post by Stefan Onken
Gruß
stefan
Stefan Onken
2005-07-08 14:56:19 UTC
Permalink
Post by Dieter Urban
Post by Stefan Onken
hallo Michael,
Application.Run "'C:Dokumente und _
EinstellungenadminDesktopTest_2.xls'!Hello2"
Die Datei wird so automatisch geöffnet, wenn sie noch nicht geöffnet
ist.
Und wie fängt man die Fehlermeldung ab, wenn sie schon offen ist ?
ich habe bei meinen Tests (Excel XP) mit
Application.Run "'D:\mappe1.xls'!makro1"
auch bei bereits (von mir) geöffneter Datei keine Fehlermeldung
bekommen.
Oder ist die Datei von jemand anderem geöffnet?

Gruß
stefan
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Dieter Urban
2005-07-08 12:35:57 UTC
Permalink
Hallo Stefan,
die Mappe ist nicht von wem anderem geöffnet. Bei mir (Excel 97)
fragt er aber, ob die Mappe nochmals geöffnet werden soll, weil
dann alle gemachten Änderungen verloren gehen.
Dieter
hallo Dieter,
Post by Dieter Urban
Und wie fängt man die Fehlermeldung ab, wenn sie schon offen ist ?
ich habe bei meinen Tests (Excel XP) mit
Application.Run "'D:\mappe1.xls'!makro1"
auch bei bereits (von mir) geöffneter Datei keine Fehlermeldung
bekommen.
Oder ist die Datei von jemand anderem geöffnet?
Gruß
stefan
--
http://newsgroups.freenet.de
Stefan Onken
2005-07-08 20:16:44 UTC
Permalink
hallo Dieter,
Post by Dieter Urban
Hallo Stefan,
die Mappe ist nicht von wem anderem geöffnet. Bei mir (Excel 97)
fragt er aber, ob die Mappe nochmals geöffnet werden soll, weil
dann alle gemachten Änderungen verloren gehen.
Dieter
probier es mal so:

Sub MakroStarten()
For each wb in WorkBooks
if wb.Name ="test_2.xls" Then
'Datei bereits geöffnet
Application.Run "test2.xls!Hello2"
Exit Sub
End If
Workbooks.Open "C:\Dokumente und Einstellungen\admin\Desktop\Test_2.xls"
Application.Run "test2.xls!Hello2"
' bzw die Variante mit den ' '
End Sub

das müsste funktionieren, wenn beide Dateien in derselben Excelinstanz
geöffnet sind.

Gruß
stefan
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Stefan Onken
2005-07-08 20:35:02 UTC
Permalink
sorry,
da fehlt das Next und die Unterstriche:

Sub MakroStarten()
For each wb in WorkBooks
if wb.Name ="test_2.xls" Then
'Datei bereits geöffnet
Application.Run "test_2.xls!Hello2"
Exit Sub
End If
Next
Workbooks.Open "C:Dokumente und EinstellungenadminDesktopTest_2.xls"
Application.Run "test_2.xls!Hello2"
' bzw die Variante mit den ' '
End Sub
--
Immer auf dem aktuellen Stand mit den Newsgroups von freenet.de:
http://newsgroups.freenet.de
Dieter Urban
2005-07-08 15:14:34 UTC
Permalink
Danke,
hab's etwas umgebaut, jetzt läuft es.
Dieter
Post by Stefan Onken
sorry,
Sub MakroStarten()
For each wb in WorkBooks
if wb.Name ="test_2.xls" Then
'Datei bereits geöffnet
Application.Run "test_2.xls!Hello2"
Exit Sub
End If
Next
Workbooks.Open "C:Dokumente und EinstellungenadminDesktopTest_2.xls"
Application.Run "test_2.xls!Hello2"
' bzw die Variante mit den ' '
End Sub
--
http://newsgroups.freenet.de
Dr. Eckehard Pfeifer
2005-07-07 13:53:10 UTC
Permalink
Hallo, wie der Name schon sagt: RunAutoMacros startet Automakros. Der
richtige Befehl lautet Application.Run, die Syntax dazu steht in der Hilfe.

--

MfG EP
Entwicklung - Beratung - Training
(MS Certified Application Developer)
www.dr-e-pfeifer.net
Michael Klein
2005-07-07 14:23:02 UTC
Permalink
Danke euch beiden.
Post by Dr. Eckehard Pfeifer
Hallo, wie der Name schon sagt: RunAutoMacros startet Automakros. Der
richtige Befehl lautet Application.Run, die Syntax dazu steht in der Hilfe.
--
MfG EP
Entwicklung - Beratung - Training
(MS Certified Application Developer)
www.dr-e-pfeifer.net
Loading...