Seite 1 von 1

Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 19.01.2018 11:02
von Meier
Hallo zusammen,

ich möchte gerne mit ComatePlus ein Kontrollkästchen in Word aktiv setzen.

Meine Suche ist bisher nicht von Erfolg gekrönt.

Für Excel habe ich das hier im Forum zum Auslesen gefunden:

Code: Alles auswählen

ExcelObject\GetIntegerProperty("ActiveSheet\Shapes('Check Box 163')\ControlFormat\Value")
Das jetzt nur für Word und zum Setzen.

Vielleicht kann mit hier jemand ja unter die Arme greifen.


Gruß
Meier

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 08:59
von Meier
Hallo zusammen,

hat denn keiner eine Idee?

Letztendlich muss ich in Word automatisiert Haken setzen. Wie immer das aussehen mag, ich bin für jede Idee dankbar.


Gruß.
Meier

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 09:24
von Kiffi
erstell mal bitte ein Beispiel-DOC und lade es irgendwo hoch.

Grüße ... Peter

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 10:47
von Meier
Hallo Peter,

vielen Dank für deine Rückmeldung. Ich habe noch Hoffnung. :bounce:

Ich habe nicht herausgefunden wie man eine Datei hochladen kann, aber vielleicht hilft das Bild schon mal:

https://imgur.com/a/zxSrg

Die Haken sollen von außen gesetzt werden, weil ich die Informationen in einem Purbasic-Programm habe und
ein Word-Export machen muss, in dem dann die Haken bereits gesetzt sind.

Gruß.
Meier

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 11:18
von Kiffi
das Bild ist schon mal ein Anhaltspunkt.

Allerdings wäre die DOC-Datei schon extrem hilfreich.

Vielleicht hiermit? https://filehorst.de

Grüße ... Peter

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 13:08
von Meier
Aha... Danke.

http://filehorst.de/d/ccywmaDu
http://filehorst.de/d/ccoobaix

Ich habe mal zwei Dateien hochgeladen. Mir ist es eigentlich egal, ob ich später das doc-Format manipuliere oder vorher das xml-Format.

Gruß.
Meier

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 15:38
von Kiffi
:freak: jetzt weiß ich wieder, warum ich die Office-Produkte so liebe...

ok, anbei ein Code, der Dir hoffentlich ein wenig weiterhilft.

Anmerkungen:

* Seltsam ist, dass die Kontrollkästchen beide den gleichen Namen haben. Das sind auch andere Checkboxen, als wenn man sie mit den Entwicklertools in das Dokument einfügen würde. Da weißt Du sicherlich besser Bescheid als ich.

* Ich kann das geänderte Dokument auf meinem Rechner nicht speichern. Ich bekomme lediglich ein 'Befehl misslungen'. Das wird mit Sicherheit an diesem dusseligen Office Trust-Center liegen. Habe jetzt aber nicht den Nerv, mich da einzuarbeiten.

Code: Alles auswählen

IncludePath "COMatePlus" ; <- Muss Du auf Deine Bedürfnisse anpassen!
XIncludeFile "COMatePlus.pbi"

EnableExplicit

#wdFormatXMLDocument=12                  ; XML document format.

Procedure ShowErrorIfAny() 
  
  If COMate_GetLastErrorCode() 
    Debug COMate_GetLastErrorDescription() 
  EndIf 
  
EndProcedure 

Define.COMateObject     WordApplication
Define.COMateObject     WordDocument
Define.COMateEnumObject FormFields
Define.COMateObject     FormField

Define FormFieldName.s
Define FormFieldCheckBoxValue

Define.s SourceDoc = GetPathPart(ProgramFilename()) + "\setze_kontrollkästchen.docx" ; <- Muss Du auf Deine Bedürfnisse anpassen!
Define.s TargetDoc = GetPathPart(ProgramFilename()) + "\output.docx" ; <- Muss Du auf Deine Bedürfnisse anpassen!

WordApplication = COMate_CreateObject("Word.Application")

If WordApplication
  
  WordApplication\SetProperty("DisplayAlerts = #False") 
  
  Debug "Open..."
  WordDocument = WordApplication\GetObjectProperty("Documents\Open('" + SourceDoc + "')")
  ShowErrorIfAny()
  
  Debug "Enumeration..."
  FormFields = WordDocument\CreateEnumeration("FormFields") 
  
  If FormFields
    
    FormField = FormFields\GetNextObject() 
    
    While FormField
      
      ; Namen auslesen
      
      FormFieldName = FormField\GetStringProperty("Name")
      Debug "FormFieldName:  " + FormFieldName
      
      ; Wert der Checkbox auslesen
      FormFieldCheckBoxValue = FormField\GetIntegerProperty("CheckBox\Value")
      Debug "FormFieldCheckBoxValue: " + FormFieldCheckBoxValue
      
      ; Neuen Wert setzen
      FormField\SetProperty("CheckBox\Value=#True") ; ... oder #False
      ShowErrorIfAny()    
      
      Debug "-----------------"
      
      FormField\Release() 
      FormField = FormFields\GetNextObject() 
      
    Wend 
    
    FormFields\Release() 
    
  EndIf 
  
  ; schlägt bei mir fehl
  ;   Debug "ActiveDocument\SaveAs()..."
  ;   WordApplication\Invoke("ActiveDocument\SaveAs('" + TargetDoc + "')")
  ;   ShowErrorIfAny()
  
  ; schlägt bei mir fehl
  ;    Debug "ActiveDocument\SaveAs2()..."
  ;    WordApplication\Invoke("ActiveDocument\SaveAs2('" + TargetDoc + "', " + #wdFormatXMLDocument + " As Long)")
  ;    ShowErrorIfAny()
  
  Debug "Quit()..."
  WordApplication\Invoke("Quit(0)") 
  ShowErrorIfAny()
  
  WordApplication\Release() 
  ShowErrorIfAny()
  
  Debug "ende"
  
EndIf
Wie geschrieben: Der Code soll als Inspiration dienen. Vielleicht enthält er genau die Informationen, die Dir zur erfolgreichen Bearbeitung noch gefehlt haben.

Grüße ... Peter

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 06.04.2018 18:07
von Meier
Das geht genau in die Richtung woran ich gerade arbeite (ComatePlus). :D

Die Bennenung der beiden Kontrollkästchen soll natürlich unterschiedlich sein. Hier war ich ein bisschen schlampig. :mrgreen:

Leider bin ich jetzt erstmal verhindert. Am Dienstag bin ich wieder im Lande und brenne darauf mir das anzusehen.

Schönes Wochenende.

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 12.04.2018 12:41
von Meier
Hallo Peter,

es klappt. :bounce:

Ich hatte das Dokument mit
WordApplication\Invoke("Documents\Open('" + SourceDoc + "')")
geöffnet und nicht wie du mit
WordDocument = WordApplication\GetObjectProperty("Documents\Open('" + SourceDoc + "')")
.

Danach habe ich versucht, die Formfields direkt anzusprechen, aber weiter mit WordApplication statt mit WordDocument. Mir ist der Unterschied auch noch nicht wirklich klar.
Ich habe leider keine Dokumentation zu CoMate gefunden. Hast du vielleicht noch Infos über eine Dokumentation?
Deine Schleife über FormFields macht, wo ich sie jetzt sehe, total Sinn. Ja, und dann war es ganz einfach.

Vielen vielen Dank.

Gruß.
Meier

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Verfasst: 12.04.2018 12:58
von Kiffi
Meier hat geschrieben:es klappt.
schön! :D

Die Enumeration der FormFields musst Du ja über das Dokumenten-Objekt laufen lassen, welches Du per WordApplication\GetObjectProperty erhältst.

WordApplication\Invoke("Documents\Open... würde auch funktionieren. Allerdings musst Du dann die Enumeration über das ActiveDocument laufen lassen.

Führen halt mehrere Wege nach Rom...

Grüße ... Peter