Visual Basic-Quellcode
- Sub lieferscheinerzeugen()
- '
- ' lieferscheinerzeugen Makro
- '
- ' Tastenkombination: Strg+e
- '
- Dim LFExcel As String
- Dim wbQuelle As Workbook
- Dim wbZiel As Workbook
- Dim ar As Variant
- Dim rtn As Variant
- Dim AppWD As Object
- Dim objDoc As Object
- Dim objDocProdTP As Object
- Dim i As Integer
- Dim counter As Integer
- Dim firstCheck As Boolean
- Dim LFNr As String 'LieferscheinNummer
- Set wbZiel = ThisWorkbook
- Dim workPath As String
- workPath = wbZiel.Path
- 'MsgBox (workPath)
- 'Set WDLF = AppWDLF.documents.Open(workPath & "\vorlagen\LFTemplate.docx")
- Set AppWD = CreateObject("Word.Application") 'Word als Object starten
- AppWD.Visible = True
- 'Set objDocProdTP = AppWD.documents.Open(workPath & "\vorlagen\LFPostTemplate.docx")
- Set objDoc = AppWD.documents.Open(workPath & "\vorlagen\LFTemplate2.docx")
- With Application.FileDialog(msoFileDialogOpen)
- .AllowMultiSelect = False
- .Show
- LFExcel = .SelectedItems(1)
- End With
- 'MsgBox (LFExcel)
- Set wbQuelle = Workbooks.Open(LFExcel)
- 'Hier wir die letzte Zeile der Spalte A ermittelt
- letztezeile = wbQuelle.Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
- ar = wbQuelle.Sheets("Tabelle1").Range(Cells(2, 6), Cells(letztezeile, 6))
- rtn = removeDuplicates(ar)
- 'MsgBox (CStr(UBound(rtn) + 1) & " Paletten gefunden")
- For counter = 0 To UBound(rtn)
- firstCheck = True
- LFNr = rtn(counter)
- 'MsgBox (objDoc.Bookmarks.Count)
- 'objDoc.Goto what:=-1, Name:="lblSBody"
- 'MsgBox (objDocProdTP.Bookmarks.Count)
- For i = 2 To letztezeile
- If wbQuelle.Sheets("Tabelle1").Cells(i, 7) <> "" Then
- If firstCheck Then
- firstCheck = False
- lieferNr = wbQuelle.Sheets("Tabelle1").Cells(i, 6)
- lieferDate = wbQuelle.Sheets("Tabelle1").Cells(i, 10)
- lieferFirma = wbQuelle.Sheets("Tabelle1").Cells(i, 64)
- lieferStr = wbQuelle.Sheets("Tabelle1").Cells(i, 65)
- lieferPlz = wbQuelle.Sheets("Tabelle1").Cells(i, 66)
- lieferOrt = wbQuelle.Sheets("Tabelle1").Cells(i, 67)
- lieferPlNr = wbQuelle.Sheets("Tabelle1").Cells(i, 11)
- End If
- Else
- lieferVPE = wbQuelle.Sheets("Tabelle1").Cells(i, 38) & " " & wbQuelle.Sheets("Tabelle1").Cells(i, 39)
- lieferBW = wbQuelle.Sheets("Tabelle1").Cells(i, 41)
- lieferNW = wbQuelle.Sheets("Tabelle1").Cells(i, 37)
- End If
- objDoc.Activate
- objDoc.Bookmarks("lblSPalNr").Select
- objDoc.Selection.TypeText ("123456")
- objDoc.Selection.Bookmarks("lblSPalNr").Range.Text ="123456"
- Next
- objDoc.SaveAs Filename:=workPath & "\fertig\" & LFNr & ".doc"
- Next
- 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