Aktuelle Zeit: 14.11.2018 04:09

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 03.09.2018 15:59 
Offline

Registriert: 18.01.2018 17:02
Hallo zusammen,

ich möchte gerne mit ComatePlus ein Bild im Header von Word platzieren.

Bei meiner Recherche habe ich folgenden Code gefunden, den ich geringfügig angepasst habe:

Code:
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:
Zitat:
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.


Gruß
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 04.09.2018 13:19 
Offline

Registriert: 18.01.2018 17:02
Hallo zusammen,

ich habe versucht oben folgenden VBA-Code in ComatePlus umzusetzen:
Code:
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.InlineShapes.AddPicture FileName:= _
        "D:\image.jpg"
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument


Ich habe jetzt auch diese kürzere VBA-Version gefunden:
Code:
ThisDocument.Sections.Item(1).Headers(wdHeaderFooterPrimary) _
  .Range.InlineShapes.AddPicture ("D:\image.jpg")

Diese kommt der ComatePlus-Version von oben ja schon sehr nahe.

Aber egal wie ich versuche die Parameter zu kombinieren, kommen folgende Fehlermeldungen:
Zitat:
'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.

Viele Grüße
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 04.09.2018 14:24 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
*schubs*

Code:
XIncludeFile "../COMatePLUS.pbi"

EnableExplicit

Procedure InsertImageToWordHeader(WordFilename.s, ImageFilename.s)
 
  Protected oWordApplication.COMateObject
  Protected oActiveDocument.COMateObject
  Protected oSection.COMateObject
  Protected oHeader.COMateObject
 
  Debug "CreateObject"
  oWordApplication = COMate_CreateObject("Word.Application")
  Debug COMate_GetLastErrorDescription()
 
  If oWordApplication
   
    Debug "Application.Visible=#True"
    oWordApplication\SetProperty("Application\Visible=#True")
    Debug COMate_GetLastErrorDescription()
   
    ; Open the document.
    Debug "Documents\Open"
    oWordApplication\Invoke("Documents\Open('" + WordFilename + "')")
    Debug COMate_GetLastErrorDescription()
   
    ; ####
   
    Debug "oActiveDocument"
    oActiveDocument = oWordApplication\GetObjectProperty("ActiveDocument")
    Debug COMate_GetLastErrorDescription()
   
    If oActiveDocument
     
      Debug "oSection..."
      oSection = oActiveDocument\GetObjectProperty("Sections(1)")
      Debug COMate_GetLastErrorDescription()
     
      If oSection
       
        Debug "oHeader..."
        oHeader = oSection\GetObjectProperty("Headers(1)") ; 1 = wdHeaderFooterPrimary
        Debug COMate_GetLastErrorDescription()
       
        If oHeader
         
          Debug "oHeader..."
          oHeader\Invoke("Range\InlineShapes\AddPicture('" + ImageFilename + "')")
          Debug COMate_GetLastErrorDescription()
         
          oHeader\Release()
         
        Else
          Debug "!oHeader"
        EndIf
       
        oSection\Release()
       
      Else
        Debug "!oSection"
      EndIf
     
      oActiveDocument\Release()
     
    Else
      Debug "!oActiveDocument"
    EndIf
   
    oWordApplication\Release()
   
    Debug "Ready!"
   
  Else
   
    Debug "Failed to create application object."
    Debug COMate_GetLastErrorDescription()
   
  EndIf
 
EndProcedure

InsertImageToWordHeader("c:\test.doc", "D:\image.jpg")


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.

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 05.09.2018 16:33 
Offline

Registriert: 18.01.2018 17:02
Hallo Peter,

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. :allright:

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
Code:
appWord\Invoke("ActiveWindow\ActivePane\View.SeekView = 'wdSeekCurrentPageHeader'")
akzeptiert).

Es soll eine Zeile tiefer.

Hast du noch eine Hilfestellung?


Gruß
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 06.09.2018 15:26 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Meier hat geschrieben:
Es soll eine Zeile tiefer.

also das Bild soll in den Header, aber darüber eine Leerzeile?

Code:
XIncludeFile "../COMatePLUS.pbi"

EnableExplicit

Procedure InsertImageToWordHeader(WordFilename.s, ImageFilename.s)
 
  Protected oWordApplication.COMateObject
  Protected oActiveDocument.COMateObject
  Protected oSection.COMateObject
  Protected oHeader.COMateObject
  Protected oRange.COMateObject
 
  Debug "CreateObject"
  oWordApplication = COMate_CreateObject("Word.Application")
  Debug COMate_GetLastErrorDescription()
 
  If oWordApplication
   
    Debug "Application.Visible=#True"
    oWordApplication\SetProperty("Application\Visible=#True")
    Debug COMate_GetLastErrorDescription()
   
    ; Open the document.
    Debug "Documents\Open"
    oWordApplication\Invoke("Documents\Open('" + WordFilename + "')")
    Debug COMate_GetLastErrorDescription()
   
    ; ####
   
    Debug "oActiveDocument"
    oActiveDocument = oWordApplication\GetObjectProperty("ActiveDocument")
    Debug COMate_GetLastErrorDescription()
   
    If oActiveDocument
     
      Debug "oSection..."
      oSection = oActiveDocument\GetObjectProperty("Sections(1)")
      Debug COMate_GetLastErrorDescription()
     
      If oSection
       
        Debug "oHeader..."
        oHeader = oSection\GetObjectProperty("Headers(1)") ; 1 = wdHeaderFooterPrimary
        Debug COMate_GetLastErrorDescription()
       
        If oHeader
         
          Debug "oRange..."
          oRange = oHeader\GetObjectProperty("Range")
          Debug COMate_GetLastErrorDescription()
         
          If oRange
           
            Debug "Set Range Text..."
            oRange\SetProperty("Text = '" + #CRLF$ + "'")
            Debug COMate_GetLastErrorDescription()
           
            Debug "Range Collapse..."
            oRange\Invoke("Collapse(0)") ; 0 = wdCollapseEnd
            Debug COMate_GetLastErrorDescription()
           
            Debug "AddPicture..."
            oRange\Invoke("InlineShapes\AddPicture('" + ImageFilename + "')")
            Debug COMate_GetLastErrorDescription()
           
            oRange\Release()
           
          Else
            Debug "!oRange"
          EndIf
         
          oHeader\Release()
         
        Else
          Debug "!oHeader"
        EndIf
       
        oSection\Release()
       
      Else
        Debug "!oSection"
      EndIf
     
      oActiveDocument\Release()
     
    Else
      Debug "!oActiveDocument"
    EndIf
   
    oWordApplication\Release()
   
    Debug "Ready!"
   
  Else
   
    Debug "Failed to create application object."
    Debug COMate_GetLastErrorDescription()
   
  EndIf
 
EndProcedure

InsertImageToWordHeader("c:\test.doc", "D:\image.jpg")


Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 07.09.2018 16:38 
Offline

Registriert: 18.01.2018 17:02
Hallo Peter,

fast, die zweite Zeile ist schon da. Ich muss nur eine Zeile runter und dann einfügen.

Also statt
Code:
oRange\SetProperty("Text = '" + #CRLF$ + "'")

Code:
oRange\Invoke("Selection\MoveDown")


Besten Dank. Es klappt. :bounce:

Viele Grüße
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 11.09.2018 13:21 
Offline

Registriert: 18.01.2018 17:02
Hallo zusammen,

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. :oops:

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:

Bild

Wenn ich den 'range-type'-Befehl anwende, ist der komplette Rahmen samt Inhalt weg. Nur das Logo steht in der 2. Zeile des Headers.


Noch eine Idee?

Gruß
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 17.09.2018 10:07 
Offline

Registriert: 18.01.2018 17:02
Hallo zusammen,

ich komme einfach nicht weiter.

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:
Code:
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.InlineShapes.AddPicture FileName:= _
        "C:\test.jpg" _
        , LinkToFile:=False, SaveWithDocument:=True
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument

Wobei ich den ersten Befehl schon nicht übersetzt bekomme.

Hat jemand noch eine Hilfestellung?

Viele Grüße
Meier


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 17.09.2018 11:55 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
wie wäre es, wenn Du Dir ein Template (*.docx) samt korrekt platziertem Logo bauen würdest?

Grüße ... Peter

_________________
ƃᴉɹǝᴉʍɥɔs ʇsᴉ ɥɔɐɟuᴉǝ


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit ComatePlus Image im Word-Header platzieren
BeitragVerfasst: 17.09.2018 12:51 
Offline

Registriert: 18.01.2018 17:02
Hallo Peter,

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.

Freundliche Grüße
Meier


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye