Word Dokumente Zusammenführen



  • Hallo an alle!

    Ich wende mich an Euch, weil ich nirgendswo eine Lösung für folgendes Problem gefunden habe.
    Ich möchte gern in ein Worddokument ein zweites Worddokument einfügen bzw. anhängen (ähnl. wie im Word Einfügen->Datei).
    Folgender Bsp-Code:(ohne TWordApplication!!)

    //als Beispiel nur notwendigster Code
    Variant vWord, vDocuments, vSelections, vActivedocuments;
    String datei1 = "C:\\datei1.doc";
    String datei2 = "C:\\datei2.doc";
    
    vWord = Variant::CreateObject("Word.Application");
    
    vDocuments = vWord.OlePropertyGet("Documents");
    vDocuments.OleProcedure("Open", datei1.c_str());
    vSelections = vWord.OlePropertyGet("Selection");
    vActivedocuments = vWord.OlePropertyGet("ActiveDocument");
    

    Jetzt muss es doch was geben wie:
    vDocuments/vSelections/vActivedocuments.OleProcedure("InsertFile?", ???)

    Hat jemand eine Lösung wie man ein Dokument anhängt?
    Freue mich sehr über eine Lösung.

    Danke im Voraus!



  • gert_mue schrieb:

    Jetzt muss es doch was geben wie:
    vDocuments/vSelections/vActivedocuments.OleProcedure("InsertFile?", ???)

    Den kompletten Vorgang in Word per Makro-Recorder aufzeichnen und den resultierenden VBA-Code auswerten!?



  • Hmm, da kommt folgendes:

    Selection.InsertFile FileName:="vorlage.doc", Range:="", _
    ConfirmConversions:=False, Link:=False, Attachment:=False

    naja ünersetzen würde ich das so:

    vSelections.OleProcedure("InsertFile", datei2.c_str(),?,?,?,?);

    Kann es leider im Moment nicht ausprobieren. Was muss an Stelle der ?



  • Google ist manchmal recht informativ: Link

    und falls du kein Russisch kannst :D:

    vSelections.OleProcedure("InsertFile", datei2.c_str(), "", false, false);
    

    der 3. Wert definiert anscheinend den Bereich der kopiert werden soll und übergibt in diesem Fall alles



  • Wow, das werde ich heute Abend mal probieren.
    Also auf diese Seite bin ich nicht gestoßen.

    Ich gebe bescheid ob es funktioniert hat.

    Danke!



  • Hallo,

    also InserFile hat funktioniert 😃

    Jedoch möchte ich vorher noch ans Ende des Dokumentes springen und einen Seitenumbruch einfügen.
    Dazu Code aus Word-VBA angepasst (dort funktionierts):

    //soll ans Ende des Dokumentes gehen
    vSelections.OleProcedure("EndKey", wdStory, wdMove);
    //soll Seitenumbruch einfügen
    vSelections.OleProcedure("InsertBreak", wdPageBreak);
    

    Aber leider kann der Compiler nichts mit wdStory, wdMove und wdPageBreak anfangen (undefiniertes Symbol).

    Was oder wie muss hier die richtige Syntax lauten? 😕



  • versuch mal:

    //soll ans Ende des Dokumentes gehen
    vSelections.OleProcedure("EndKey", "6");     // 6 == wdStory 
    //soll Seitenumbruch einfügen
    vSelections.OleProcedure("InsertBreak", 7);  // 7 == wdPageBreak
    

    Quellen sind französische und russische Seiten 😉



  • Vielen Dank, das hat funktioniert!

    Deine Quellen scheinen zwar etwas speziell zu sein aber sehr hilfreich.

    Das Forum hier ist wirklich Klasse.

    Gruß 🙂



  • die Quellen kommen alle aus Google und ich bin immer froh, daß der Quellcode einheitlich in Englisch ist, da ich weder Russisch, Französisch noch Japanisch kann 😃


Anmelden zum Antworten