VBA WordTextmarke aus Excel heraus befüllfen

  • Word

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    VBA WordTextmarke aus Excel heraus befüllfen

    Visual Basic-Quellcode

    1. Sub lieferscheinerzeugen()
    2. '
    3. ' lieferscheinerzeugen Makro
    4. '
    5. ' Tastenkombination: Strg+e
    6. '
    7. Dim LFExcel As String
    8. Dim wbQuelle As Workbook
    9. Dim wbZiel As Workbook
    10. Dim ar As Variant
    11. Dim rtn As Variant
    12. Dim AppWD As Object
    13. Dim objDoc As Object
    14. Dim objDocProdTP As Object
    15. Dim i As Integer
    16. Dim counter As Integer
    17. Dim firstCheck As Boolean
    18. Dim LFNr As String 'LieferscheinNummer
    19. Set wbZiel = ThisWorkbook
    20. Dim workPath As String
    21. workPath = wbZiel.Path
    22. 'MsgBox (workPath)
    23. 'Set WDLF = AppWDLF.documents.Open(workPath & "\vorlagen\LFTemplate.docx")
    24. Set AppWD = CreateObject("Word.Application") 'Word als Object starten
    25. AppWD.Visible = True
    26. 'Set objDocProdTP = AppWD.documents.Open(workPath & "\vorlagen\LFPostTemplate.docx")
    27. Set objDoc = AppWD.documents.Open(workPath & "\vorlagen\LFTemplate2.docx")
    28. With Application.FileDialog(msoFileDialogOpen)
    29. .AllowMultiSelect = False
    30. .Show
    31. LFExcel = .SelectedItems(1)
    32. End With
    33. 'MsgBox (LFExcel)
    34. Set wbQuelle = Workbooks.Open(LFExcel)
    35. 'Hier wir die letzte Zeile der Spalte A ermittelt
    36. letztezeile = wbQuelle.Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
    37. ar = wbQuelle.Sheets("Tabelle1").Range(Cells(2, 6), Cells(letztezeile, 6))
    38. rtn = removeDuplicates(ar)
    39. 'MsgBox (CStr(UBound(rtn) + 1) & " Paletten gefunden")
    40. For counter = 0 To UBound(rtn)
    41. firstCheck = True
    42. LFNr = rtn(counter)
    43. 'MsgBox (objDoc.Bookmarks.Count)
    44. 'objDoc.Goto what:=-1, Name:="lblSBody"
    45. 'MsgBox (objDocProdTP.Bookmarks.Count)
    46. For i = 2 To letztezeile
    47. If wbQuelle.Sheets("Tabelle1").Cells(i, 7) <> "" Then
    48. If firstCheck Then
    49. firstCheck = False
    50. lieferNr = wbQuelle.Sheets("Tabelle1").Cells(i, 6)
    51. lieferDate = wbQuelle.Sheets("Tabelle1").Cells(i, 10)
    52. lieferFirma = wbQuelle.Sheets("Tabelle1").Cells(i, 64)
    53. lieferStr = wbQuelle.Sheets("Tabelle1").Cells(i, 65)
    54. lieferPlz = wbQuelle.Sheets("Tabelle1").Cells(i, 66)
    55. lieferOrt = wbQuelle.Sheets("Tabelle1").Cells(i, 67)
    56. lieferPlNr = wbQuelle.Sheets("Tabelle1").Cells(i, 11)
    57. End If
    58. Else
    59. lieferVPE = wbQuelle.Sheets("Tabelle1").Cells(i, 38) & " " & wbQuelle.Sheets("Tabelle1").Cells(i, 39)
    60. lieferBW = wbQuelle.Sheets("Tabelle1").Cells(i, 41)
    61. lieferNW = wbQuelle.Sheets("Tabelle1").Cells(i, 37)
    62. End If
    63. objDoc.Activate
    64. objDoc.Bookmarks("lblSPalNr").Select
    65. objDoc.Selection.TypeText ("123456")
    66. objDoc.Selection.Bookmarks("lblSPalNr").Range.Text ="123456"
    67. Next
    68. objDoc.SaveAs Filename:=workPath & "\fertig\" & LFNr & ".doc"
    69. Next
    70. End Sub


    Ich versuche nun das bookmark lblSPalNr in LFTemplate.docx zu befüllen
    Beide Methoden , also objDoc.Selection.TypeText ("123456") und objDoc.Selection.Bookmarks("lblSPalNr").Range.Text = "123456" werfen Fehler:

    438 - Objekt unterstützt diese Eigenschaft oder Methode nicht.

    Eigentlich sollte das glaube ich ziemlich simple sein... beim ersten Block funktioniert auch das selektieren.... nur Schreiben... schreiben tut er halt nix.
    Bitte Bitte rettet meinen Sonntag ?(

    PS Textmarken sind natürlich im jeweiligen Dokument vorhanden