Test ob es ein Formularfeld in Word gibt

  • Hallo
    Ich lese über AutoIt eine Word Datei aus. Dieses mache ich indem ich die Formularfelder auslese und den Inhalt in ein Array abspeichere. Siehe folgenden Code:

    [autoit]


    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = 1
    $oWordDocuments = $oWord.Documents
    $oDok = $oWord.Documents.Open("c:\test.doc")
    $fftext = $oDok.FormFields("doc_Berichtsnummer")
    $array_doc_[0] = $fftext.Result
    $fftext = $oDok.FormFields("doc_Tagessatz")
    $array_doc_[1] = $fftext.Result

    [/autoit]

    Nun habe ich in manchen Word Dateien allerdings nicht das Formularfeld "doc_Tagessatz". Das Formularfeld existiert nicht. Mein AutoIt Script hält hier dann mit einer Fehlermeldung an.
    The requested action with this object has failed.:
    $fftext = $oDok.FormFields("doc_Tagessatz")
    $fftext = $oDok.FormFields("doc_Tagessatz")^ ERROR

    Wie kann ich das abfangen, das der Code in AutoIt weiterbearbeitet wird. Kann ich vorher prüfen ob es das Forumlarfeld in meiner Word Datei gibt?

    Gruß Autoirrer

  • Hallo autoirrer,

    leider bin ich auf diesem Gebiet kein Experte, aber da bisher kein Experte gesprochen hat, will ich mal meine laienhafte Meinung kundtun ;)


    Also, Word wird von Dir als Objekt aufgerufen, und für dieses Objekt mußt Du dann einen Error Handler anlegen, der alle vom Objekt erzeugten Fehler abfängt. Es gibt dazu den Befehl ObjEvent(), mit dem der Error handler definiert werden kann.

    Jetzt mußt Du "NUR" noch etwas im COM Modell von Word rumstöbern und Deinen Error handler schreiben ;)

    Viel Erfolg dabei.

    TrueMu

  • Danke TrueMu.

    Da ich mich einigermassen mit VBA auskenne habe ich eine andere Lösung gefunden. Bei der Umsetzung zu AutoIt hapert es allerdings noch manchmal!
    Hier also die Lösung die zumindest bei mir funktioniert:

    [autoit]


    $aktuellesFormfield = $oDok.Bookmarks.Exists("doc_Tagessatz")
    if $aktuellesFormfield <> 0 Then
    msgbox(0,"Feld ist vorhanden!","")
    Endif

    [/autoit]

    Gruß Autoirrer