Microsoft Excel

Herbers Excel/VBA-Archiv

Excel Makro von C++ aus erzeugen

Betrifft: Excel Makro von C++ aus erzeugen von: Tobias Neubert
Geschrieben am: 01.09.2004 14:09:20

Hallo

Ich habe per OLE in C++ ein leeres Excel-Dokument erzeugt, nämlch so:

Variant V = Variant::CreateObject("Excel.Application");
V.OlePropertySet("Visible", true);
V.OlePropertyGet("Workbooks").OleProcedure("Add");

Nun hatte ich ein Makro geschrieben und exportiert, was in diese leere Datei hinein importiert werden soll. In VBA würde man das ja mit

Workbooks("Mappe1.xls").VBProject.VBComponents.Import("\Modul1.bas")

machen. Um das von C++ aus zu bewirken müsste das doch eigentlich so gehen:

V.OlePropertyGet("Workbooks","Mappe1.xls").OlePropertyGet("VBProject").OlePropertyGet("VBComponents").OleFunction("Import","\Modul1.bas");

Es geht aber nicht, es kommt eine Exception. Hat jemand so etwas schon mal gemacht und weiß wo mein Fehler liegt? Oder gibt es einen VBA-Befehl, mit dem man den Code direkt als neues Makro hineinschreiben kann?

Danke im Voraus für die Hilfe!

Tobias Neubert

  


Betrifft: AW: Excel Makro von C++ aus erzeugen von: GerdZ
Geschrieben am: 01.09.2004 14:50:12

Hallo Tobias,

wurde die Datei schon gespeichert?
Vor dem Speichern hat die neue Mappe noch nicht die Endung ".xls".
Vielleicht funktioniert:
V.OlePropertyGet("Workbooks","Mappe1").OlePropertyGet...

Gruß
Gerd


  


Betrifft: AW: Excel Makro von C++ aus erzeugen von: leider noch keine Besserung
Geschrieben am: 01.09.2004 14:56:45

Danke für den Tipp,
hab's probiert und es ist leider immer noch der gleiche Fehler aufgetreten.

Gibt es sonst noch Möglichkeiten?


  


Betrifft: AW: Excel Makro von C++ aus erzeugen von: GerdZ
Geschrieben am: 01.09.2004 15:22:24

Funktioniert das Erzeugen der Datei überhaupt?
Workbooks.Add wird im VBA-Objektkatalog als Funktion angegeben.
Müßte es da nicht
V.OlePropertyGet("Workbooks").OleFunction("Add");
heißen?
Aus einem Beispiel im Internet:
Excel=Variant::CreateObject("Excel.Application");
ExcelBook=Excel.OlePropertyGet("WorkBooks");
ExcelSheet=ExcelBook.OleFunction("Add");
ExcelBook=Excel.OlePropertyGet("ActiveWorkBook");

Gruß
Gerd


  


Betrifft: AW: Excel Makro von C++ aus erzeugen von: Tobias Neubert
Geschrieben am: 01.09.2004 15:47:45

Ja, die leere Datei wird geöffnet und es Funktioniert mit Procedure genauso wie mit Function. Bei deinem Codebeispiel passiert dagegen gar nichts, obwohl ich das auch nicht ganz verstehe.

Ich kann auch ein Makro über OLE ausführen, wenn es in der geöffneten Datei schon drin ist. Wiegesagt: Nur das Makro in eine leere Datei hineinzubekommen ist das Problem.

Gruß: Tobias

P.S.: Diesmal nutze ich die Name-Zeile nicht für den Betreff ;-)


 

Beiträge aus den Excel-Beispielen zum Thema "Excel Makro von C++ aus erzeugen"