Grafik in Word Dokument einfügen



  • Hoi.

    Ich habe ein super Tutorial gefunden wie man in Word Dateien Text einfügt.
    => http://www.bytesandmore.de/rad/cpp/snipp/sc06023.php

    Jetzt wüsst ich aber auch gerne wie ich Grafiken an diese Textmarken einsetze.
    Ist das möglich und falls ja, wie?

    Ne andere dumme Frage wäre: Wie stelle ich doc Dokumente unter CBuilder5 dar?

    Danke.



  • Zum ersetzen eines Bildes in einer .doc Vorlage habe ich das gefunden.

    vWord.ActiveDocument.InlineShapes.AddPicture(wFileNamePicture, tyParam, EmptyParam, EmptyParam);

    Aber wie baut man das in das oben genannte Beispiel ein?
    Wäre echt super wenn da jemand helfen könnte! Danke.



  • Wenn Du bereits Zugriff auf das Bookmark-Objekt hast, musst
    Du lediglich noch auf dessen Range-Eigenschaft (via GetPropertyBaName),
    dann auf dessen InlineShapes-Collection (ebenfalls via GetPropertyByName
    oder via Invoke0) und dann noch auf dessen Methode AddPicture
    zugreifen. AddPicture verlangt als Parameter den Pfad zur Datei.
    Diese Methode liefert Dir ein InlineShape-Objekt zurück. Die Anzeigegrösse
    des Bildes etc. musst Du dann über dieses InlineShape-Objekt
    einstellen.

    Quelle: google



  • Klingt schön. Habe aber immernoch keinerlei Ahnung wie ich es nun anwenden muss.



  • Wie wärs mal mit SUCHEN?
    Und dann Grafik einfügen eingeben? 🙄 🕶 🤡



  • Kluger Ratschlag. War das erste was ich tat und das Ergebnis war letztendlich dieser Thread. Scheint leider niemand wirklich eine Lösung zu wissen. Trotzdem Danke.



  • soory, du musst "Grafik laden " hinschreiben , dann passts 😉
    Tipp: Wähl mal MFC und C++ aus
    Und was sagst du?



  • Ich habe natürlich eh nur in CBulder Foren gesucht.
    Da scheint es einer geschafft zu haben. Mein Compiler meldet jedoch Error wenn ich dem Pointer ein = NULL zuweisen möchte. Auch weiss ich nicht was "spDispDokument" sein soll. Mein VARIANT ist es scheinbar nicht kompatibel. Verdammt viel was er da machen muss um ein Bild auszutauschen X.X

    Kann sich eventuell einer mal das obige Beispiel laden und in die Vorlage ein Bild einfügen was er dann ersetzt und hier zeigen wie das geht? Sowas wäre sicherlich für viele nützlich.. Man findet unter Google keine Hilfe aber massenweise von Leutz die genau sowas suchen und scheinbar bleibt die Lösung für immer geheim 🙄



  • So ersetze ich die Grafik mit Text

    AnsiString text="123abc";
    vSelection.Exec(Procedure("GoTo") << (int)wdGoToBookmark << 0 << 0 << "Grafik");
    vSelection.OleProcedure("TypeText",(VARIANT)((Variant)text.c_str()));
    

    Aber wie ersetze ich nun die Grafik mit einer Grafik?
    Irgendwie muss sowas einfliessen (VBA): ActiveDocuments.InlineShapes.AddPicture





  • Das Problem liegt wie schon erwähnt an den ersten Zeilen

    IDispatchPtr spBookmarks = NULL; // Konvertierung von 'int' nach 'IDispatchPtr' nicht möglich

    spDispDokument.GetPropertyByName(L"Bookmarks", &vResult); // Undefiniertes Symbol 'spDispDokument'

    Und viele weitere Folgefehler.

    Du kannst ja selber mal schnell http://www.bytesandmore.de/rad/cpp/files/WordControlSrc.zip laden und versuchen das Beispiel dort einzuarbeiten. Wäre überrascht und erfeut wenn es hinbekommen würdest 🤡



  • was willst du überhaupt mit dem anderen Projekt da machen ?
    Tu mal den code hier reinschreiben,dann klappts
    http://www.a-m-i.de/tips/office/officeautomation.php#cppexample_word
    okay?



  • Ich danke dir das versuchst zu helfen, jedoch funktioniert dein Beispiel so gut es scheinen mag nur mit Visual Studio und selbst da bricht es bei mir mit Speicherfehler ab bei 0 Error und 0 Fehler Compilierung.



  • versuch mal folgendes (müßte auch mit Jpg funktionieren):

    vSelection.Exec(Procedure("GoTo") << (int)wdGoToBookmark << 0 << 0 << "Grafik");
     vSelection.OlePropertyGet("InlineShapes").OleProcedure("AddPicture","C:\\Temp\\Dein_Bild.bmp");
    

    die Quelle war übrigends ein russisches Forum, gut das der Code standardisiert ist 😃

    Grüße
    Linnea



  • Hallo,
    ich lasse jetzt einfach mal diesen Beitrag nach sieben Jahren nochmal aufleben.
    Und zwar habe ich das Problem, dass ich die Grafiken in den InlineShapes nicht richtig skalieren kann. Ich habe jetzt schon versucht, die InlineShapes in eine normale CanvasShape zu konvertieren und dann die Größe usw. zu verändern.
    Das ist mir leider aber auch nicht gelungen.
    Habt ihr eine Idee, wie man die Größe der Grafik in Word anpassen könnte?
    Liebe Grüße



  • DerPizzaProf schrieb:

    ich lasse jetzt einfach mal diesen Beitrag nach sieben Jahren nochmal aufleben.

    Grundsätzlich: Für jede Frage ein eigenen Thread, und alte Threads auch in Ruhe lassen...



  • Das passt schon; die Faustregel lautet 'Ein Thema pro Thread, ein Thread pro Thema'.

    DerPizzaProf schrieb:

    Und zwar habe ich das Problem, dass ich die Grafiken in den InlineShapes nicht richtig skalieren kann.

    Was genau willst du erreichen?
    Generell gilt bei der Office-Automation: versuche zuerst, die Funktionalität direkt in Office per Makro bzw. VBA abzubilden. Den so entstandenen Code kann man dann u.U. leichter in den BCB übertragen.


Anmelden zum Antworten