Fragensteller
Makro starten in Embbeded OLE Object Excel

Frage
-
Hi, Ich habe ein VC2008-MFC Programm in dem ich via COleClientItem ein Excelsheet einbette.
Wenn ich in die dann erscheinende Excel-Menüzeile gehe sehe ich das ein von mir geschriebenes Makro "Makro1" in diesem xls gibt. Nun hole ich mir das Automation Interface für das Workbook aus dem m_lpObject des eingebetteten Objekts. Klappt auch prima. Mit diesem Workbook Object kann ich beispielsweise einen Range selektieren und sehe das auch sofort im eingebetteten Objekt. Nun will ich aber auch Makro1 starten. Dazu hole ich mir via GetApplication() des Workbooks das Application Objekt und versuche dann mit der Methode Run dieses Objektes das Makro zu starten. Dann bekomme ich aber die Fehlermeldung "Excel hat das Makro nicht gefunden. Versuch eich es über den Syntax Run('MeinExcel.xls'!Makro1') gibt es keine Fehlermeldung mehr aber das Makro scheint in einer weiteren Instanz von Excel abzulaufen, denn ich sehe nichts im eingebetteten Objekt. Stattdessen habe ich nach schließen meines Programmes noch ein Excel offen in dem das Makro abgelaufen ist.
Klingt kompliziert aber vielleicht weiß doch jemand wie ich ein Makro ausführen kann, wenn ich das "Application Interface" von einem COleClientItem bekommen habe.
Freudi
Alle Antworten
-
Hallo Martin.
Danke für die Antwort. Workbook.Run hätte ich ja genommen aber Workbook hat keine Run Methode nur RunAutoMacros und das ist was anderes.
siehe : WorkbookDoc
Ich musste mir also das Applicationobject holen aber mit dem geht's irgendwie nicht.
Noch ein Tipp?
Freudi
-
Verwende ja die generierte h Datei. Habe jetzt nochmal mit GetIDsOfName versucht ob Workbook eine Run Methode besitzt. Leider nicht.
Im Excel habe ich auch die Möglichkeit zu sagen ob das Makro zum Workbook oder zum Sheet oder Global sein soll. Aber keines davon funktioniert wenn ich mit eingebetteten Objekten arbeite. Starte ich per "reiner" Automatisierung findet er die Makros.