XIncludeFile "../COMatePLUS.pbi"
Procedure AmendHeader()
Protected.S strCommand
Protected appWord.COMateObject, docMine.COMateObject, objHeader.COMateObject
Debug "CreateObject"
appWord = COMate_CreateObject("Word.Application")
Debug COMate_GetLastErrorDescription()
If appWord
Debug "Application.Visible=#True"
appWord\SetProperty("Application\Visible=#True")
Debug COMate_GetLastErrorDescription()
; Open the document.
Debug "Documents\Open"
strCommand = "Documents\Open('C:\test.doc')"
appWord\Invoke(strCommand)
Debug COMate_GetLastErrorDescription()
Debug "ActiveDocument"
docMine = appWord\GetObjectProperty("ActiveDocument")
Debug COMate_GetLastErrorDescription()
Debug "Header Range"
; wdHeaderFooterPrimary = 1
strCommand = "Sections(1)\Headers\Item(1)\Range"
objHeader = docMine\GetObjectProperty(strCommand)
Debug COMate_GetLastErrorDescription()
;*********************************** Hier möchte eine Bild in den Header einfügen *************************************************
Debug "Bild einfügen"
objHeader\SetProperty("Application\InlineShapes\AddPicture\FileName='D:\image.jpg'") ; Vorher wurde hier der auskommentierte Text eingefügt. Der Parameter ist quasi aus VBA.
; Debug "Text Property"
; strCommand = "Text = 'Word COM Automation Test'"
; objHeader\SetProperty(strCommand)
Debug COMate_GetLastErrorDescription()
;**************************************************************************************************************************************
; Tidy up.
Debug "Release Objects"
objHeader\Release()
docMine\Release()
appWord\Release()
Else
Debug "Failed to create application object."
Debug COMate_GetLastErrorDescription()
EndIf
ProcedureReturn ReturnValue
EndProcedure
AmendHeader()
Fehlermeldung:
Method/property not supported by this object.
Vielleicht kann mir ja jemand unter die Arme greifen. Entweder genau hierzu oder vielleicht gibt es ja auch eine andere Möglichkeit, ein Bild in den Header einzubinden.
Diese kommt der ComatePlus-Version von oben ja schon sehr nahe.
Aber egal wie ich versuche die Parameter zu kombinieren, kommen folgende Fehlermeldungen:
'Method/property not supported by this object.'
oder
Member not found. (Check that you have not omitted any optional parameters and are not trying to set a read-only property etc.)'
Ich hab das Gefühl, ich brauche einfach einen Schubs.
Dokument speichern und schließen und vorher testen, ob Word-Datei und Bild-Datei auch tatsächlich vorhanden sind, müsstest Du noch selber implementieren.
okay ich muss zugeben, auf 'Headers(1)' wäre ich nicht gekommen.
Aber es funktioniert. Das Bild wird in der Kopfzeile dargestellt. Vielen Dank dafür.
Leider ist das Bild links oben in der Kopfzeile und lässt sich nicht da wegbewegen.
Ich habe es versucht in gleicher Weise mit 'Item(1)' (scheint es nicht zu geben) und mit 'Selection'+'Move' (kommt nicht in die Kopfzeile, obwohl er
zu früh gefreut. Ich war Freitag in Eile und habe die Fehlermeldung nicht drum herum gebaut. Das Logo stand nur zufällig richtig. 'range-move'-Befehl hatte keine Auswirkung.
In meiner Testumgebung kann ich den 'range-type'-Befehl anwenden. Was ich noch nicht erwähnt habe (weil ich dachte, dass es nicht wichtig sei) ist, dass mein eigentlicher Header wie folgt aussieht:
Wenn ich den 'range-type'-Befehl anwende, ist der komplette Rahmen samt Inhalt weg. Nur das Logo steht in der 2. Zeile des Headers.
Ich verfolge zum Einen den Weg von Peter, wobei egal was ich ändere entweder der Rahmen verschwindet oder das Bild sich nicht von oben links wegbewegt.
Zum Anderen habe ich immer wieder versucht den folgenden VBA-Code in ComatePlus zu übersetzen, der ja genau das macht:
das hatte ich vorher und hatte jahrelang funktioniert.
Jetzt soll aber aus einer Auswahl von Logos zur Laufzeit ein Bild gewählt werden und dann eingefügt werden.
Das drumherum ist fertig, nur das Setzen des Bildes fehlt noch.
Es handelt sich um ca. 72 Logos. Ich könnte für jedes Logo eine Vorlage erstellen. Bei Änderungen müsste ich dann immer alle 72 Vorlagen anpassen. Und die Tendenz der Logoanzahl ist steigend.