Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag von Kiffi »

erstell mal bitte ein Beispiel-DOC und lade es irgendwo hoch.

Grüße ... Peter
Hygge
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Hygge
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Hygge
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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.
Meier
Beiträge: 21
Registriert: 18.01.2018 17:02

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Mit ComatePlus Kontrollkästchen in Word aktiv setzen

Beitrag 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
Hygge
Antworten