VBS/Inhaltsteuerelemente (Formularfelder) aus MS Word 2010 auslesen

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von sikko.

    VBS/Inhaltsteuerelemente (Formularfelder) aus MS Word 2010 auslesen

    SERVUS!

    Ggf. kann mir jemand ein wenig Hilfestellung geben – „try&error + Google“ hat
    leider (bis jetzt) nicht zu einer Lösung geführt.

    Ich möchte gerne mittels Skriptaufruf (z.B. c:\tmp\word.vbs) die
    Inhaltssteuerelemente (früher Formularfelder) einer bestimmten Word 2010 Datei (z.B.
    c:\tmp\GT.docx) in Variablen übertragen, um diese anschließend in meine DB (via
    ODBC) zu übertragen.

    In meiner Worddatei besitze ich folgende Inhaltssteuerelemente/Formularfelder:

    1. Auto:
    a. Titel: Auto
    b. Tag: Auto

    2. Farbe:
    a. Titel: Farbe
    b. Tag: Farbe

    Die Verbindung zur DB ist ja kein Problem aber ich bekomme einfach
    die Inhaltssteuerelemente/Formularfelder
    nicht gegriffen.

    Danke & Gruß
    Vince
    Es ist wesentlich leichter, dir zu helfen, wenn du deinen bisherigen Ansatz mal hier rein stellst und dann konkrete Fragen stellst.

    Es wird keiner Lust haben, hier eine Komplettlösung zu entwickeln, die dann womöglich nicht einmal zu deinen Anforderungen passt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    SERVUS!

    anbei mein bestes (angepasstes) Googleergebnis:
    ----------------------------------------------------------------------
    Option Explicit
    Const wdFieldFormTextInput = 70
    Const wdNumberText = 1
    Const ORDNERPFAD = "C:\wordtest\"
    Dim FSO, Datei, Word, Formularfeld, Ausgabe
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Word = CreateObject("Word.Application")
    For Each Datei In FSO.GetFolder(ORDNERPFAD).Files
    If Lcase(FSO.GetExtensionName(Datei.Path)) = "docx" Then
    Ausgabe = ""
    Word.Documents.Open(Datei.Path)
    Word.Visible = False
    For Each Formularfeld In Word.ActiveDocument.FormFields
    If Formularfeld.Type = wdFieldFormTextInput And Formularfeld.TextInput.Type = wdNumberText Then
    Ausgabe = CStr(Formularfeld.Value) & vbCrLf & Ausgabe
    End If
    Next
    Wscript.Echo Ausgabe
    Word.Documents.Close
    End If
    Next
    Word.Quit
    ----------------------------------------------------------------------0

    Ist nicht viel... aber momentan der beste Ansatz :(
    Ich möchte halt von außen die Inhaltsfelder erfassen.

    Danke & Gruß
    Vince
    SERVUS!

    Das Problem war die richtige Bezeichnung zu finden – habe jetzt aber eine Lösung gefunden – Stichwort: Inhaltssteuerelement = ContentControls (MS Word 2010)

    Zur Lösung:

    wdFieldFormTextInput = 70
    wdNumberText = 1
    DateiMSW = „c:\wordtest\formular.docx“
    Dim FSO, Datei, Word, conControl
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Word = CreateObject("Word.Application")

    Word.Documents.Open(DateiMSW)
    Word.Visible = False
    For Each conControl In Word.ActiveDocument.ContentControls
    if conControl.Tag = "Auto" then
    AUTO_NAME = conControl.Range.Text
    end if
    if conControl.Tag = "Farbe" then
    FARBE_NAME = conControl.Range.Text
    end if
    Next
    Word.Documents.Close
    Word.Quit
    set Word = nothing

    Danke & Gruß
    Vince