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.
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
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).
Die Bennenung der beiden Kontrollkästchen soll natürlich unterschiedlich sein. Hier war ich ein bisschen schlampig.
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.
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!
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