none
Word Felder mit Powershell ausfüllen RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich habe eine Word Vorlage mit 5 Feldern. Diese möchte ich per PowerShell befüllen, hat jemand einen Vorschlag wie ich am besten vorgehe?

    Wie ich bisher rausgefunden habe muß ich wohl mit Word.Application arbeiten, finde aber keine Befehlsübersicht oder ähnliches.

    Gruß Sascha

    Freitag, 25. November 2022 17:50

Alle Antworten

  • Hier findest du das Objektmodell von Word.Application.

    https://learn.microsoft.com/en-us/office/vba/api/word.application

    Orientiere dich nicht an VBA. Hier findest du halt alle Zugriffswege auf Word Dokumente.

    Freitag, 25. November 2022 17:54
  • Hallo Sascha,

    ich hatte einmal ähnliches mit VBA umgesetzt. Vielleicht hilft dir das etwas. Objektmodul sollte ja gleich sein.

    Im Word gibt es Textmarken mit Namen (zb. Famname, Vorname usw.). Diese werden von VBA befüllt

    strVorlage = "h:\vorlagen\rechnung.dotx"
    Set objword = CreateObject("Word.Application")
    With objword
        .Visible = True
        .Documents.Add strVorlage


        If Not IsNull(Me.FAMNAME) Then
            .ActiveDocument.Bookmarks("Famname").Select
            .Selection.Text = Me.FAMNAME
        End If

        If Not IsNull(Me.VORNAME) Then
            .ActiveDocument.Bookmarks("Vorname").Select
            .Selection.Text = Me.VORNAME
        End If

     '       .ActiveDocument.SaveAs sDateiname
    End With

    objword.Activate
    Set objword = Nothing
    Close


    Sonntag, 27. November 2022 16:37
  • Leider komme ich noch nicht weiter. Bin noch recht neu bei PowerShell und mit VBA hatte ich noch nie zu tun.

    Ich habe ein Skript gefunden das alle möglichen Infos über das Feld herausgibt, in diesem Fall "Durchwahl". Wenn mir da jemand helfen könnte wäre das super.
    Ich habe also $tel = "12345" und möchte dies ins Word Dokument schreiben wo aktuell das Feld "Durchwahl" ist.

    Application               : Microsoft.Office.Interop.Word.ApplicationClass
    Creator                   : 1297307460
    Parent                    : Microsoft.Office.Interop.Word.DocumentClass
    Range                     : System.__ComObject
    LockContentControl        : False
    LockContents              : False
    XMLMapping                : System.__ComObject
    Type                      : 0
    DropdownListEntries       : 
    PlaceholderText           : System.__ComObject
    Title                     : Durchwahl
    DateDisplayFormat         : 
    MultiLine                 : 
    ParentContentControl      : 
    Temporary                 : False
    ID                        : 4055329363
    ShowingPlaceholderText    : True
    DateStorageFormat         : 2
    BuildingBlockType         : 0
    BuildingBlockCategory     : 
    DateDisplayLocale         : 1031
    DefaultTextStyle          : System.__ComObject
    DateCalendarType          : 
    Tag                       : Durchwahl
    Checked                   : 
    Color                     : -16777216
    Appearance                : 0
    Level                     : 0
    RepeatingSectionItems     : 
    RepeatingSectionItemTitle : 
    AllowInsertDeleteSection  : 
    TypeName                  : 
    Montag, 28. November 2022 10:15
  • Eigentlichmusst du nir VBA-Code in ps1-Code umsetzen.

    https://bettersolutions.com/word/fields/vba-code.htm

    In ActiveDocument.Fields findest du die Felder des Dokuments.
    Per ForEach kannst die Felder durchlaufen.
    Wenn du den Namen des Feldes kennst, kannst du auch per Index zugreifen:

    ActiveDocument.Fields["Name"]

    Per .Code erhältst du die komplette Definition.
    Per .Result das Formelergebnis.
    Ist es nur ein Datenfeld ohne Formel kannstdu das Ergebnis überschreiben.

    ActiveDocument.Fields["Name"].Result = "neuer Wert"

    Anschließend muss das Dokument den Inhalt neu laden:

    ActiveDocument.Fields["Name"].update()

    Montag, 28. November 2022 10:34