Automation von MS-Word 2007 (Bilderübertragung)



  • Hallo zusammen!
    Ich habe ein Problem mit der Automation von MS-Word 2007 bei der Bilderübertragung. Folgendermaßen bin ich bis jetzt immer vorgegangen und das hat auch in MS-Word 2000 und MS-Word 2003 wunderbar funktioniert: Ich habe eine Word-Vorlage Test.dot in der die Textformularfelder zu finden sind. Aus meiner Anwendung heraus lade ich diese Vorlage, suche nach einem Textformularfeld und füge ein Bild an dessen Stelle:

    WideString wsFilename = "C:\\test.bmp";
    WordFormField->Field->Range->InlineShapes->AddPicture(wsFilename.Detach(),Variant(false),Variant(true));
    

    Im Internet fand ich folgende Zeilen, die leider bei mir nicht in Verbindung zu Borland C++ Bulder 6 funktionieren:

    WideString wsFilename = "C:\\test.bmp";
    WordFormField->Field->Range->InlineShapes->AddPicture(wsFilename.Detach(),Variant(false),Variant(true))->ConvertToShape(); 
    /* Fehlermeldung: 'this->ConvertToShape((Word_2k::Shape**)&prop)': 
    Unbekannter Fehler
    
    Nur wenn ich das im Einzelschrittmodus debugge erscheint die Fehlermeldung nicht und die Bilder werden vernünftig angezeigt.
    */
    

    Hat jemand ein Idee wie man das richtig macht?

    MfG
    Alex



  • Das ist vermutlich irgendeine Exception, die Word wirft, weil du einen falschen Parameter übergibst.

    Daß sie so unspezifisch ist ("unbekannter Fehler"), dürfte diesem Bug in der C++Builder-RTL zuzuschreiben sein. Der Fehler wurde, glaube ich, erst in einem Update zu C++Builder 2009 behoben, aber im Bug-Report ist ein Workaround beschrieben, den du bei dir anwenden kannst; dann sollte die Fehlermeldung aussagekräftiger werden.



  • Hi audacia,
    danke für den Hinweis zu dem Workaround werde ich gleich mal ausprobieren. Schade dass die Kompatibilität von MS-Word 2003 zu MS-Word 2007 auf der Strecke geblieben ist. Was auf jeden Fall sauber funktioniert ist das Verlinken der Bilder in das Dokument in dem ich den zweiten Parameter auf true setze. Da ich aber die Bilder in dem Dokument brache, weil dieses nicht gedruckt sondern auch archiviert wird, kann ich das nicht gebrauchen:

    WideString wsFilename = "C:\\test.bmp";
    WordFormField->Field->Range->InlineShapes->AddPicture(wsFilename.Detach(),Variant(true),Variant(true)); // Bild wird als Link in das Dokument eingebunden
    

Anmelden zum Antworten