Hallo ... ich weis diese Frage wurde im Netz schon oft gestellt, aber jede Lösung, die andere angegeben haben, in den Foren zu diesem Thema führt bei mir nur zu Fehlermeldungen oder beschädigten PDF-Dateien. Mein Ziel ist es am Ende aus meiner Word-Vorlage eine PDF-Datei zu machen, aber es gelingt mir einfach nicht. Weis jemand, woran es hapert? Ich bin echt verzweifelt. Würde sogar zu Woodo greifen.
Sub Rechnung_erstellen()
Dim längeFirmenName As Long
Dim wordRechnung As Object
Dim VorlageRechnug As Object
Dim lauf As Long
Dim PositionTabelleRechnung As String
Dim AnzahlTabelleRechnung As String
Dim GesamtpreisTabelleRechnung As String
Dim SpeicherFile As String
Dim wkb2 As Workbook
Set wkb2 = Workbooks.Open(ThisWorkbook.Path & "\BestellungenTest.xlsx")
Dim wkb1 As Workbook
Set wkb1 = ThisWorkbook
wkb2.Activate
On Error Resume Next ' aktiviert Fehlerroutine für die Objektabfrage
Set wordRechnung = GetObject("Word.Application") ' Setzt Word-Dokument als Instanz
If Err.Number <> 0 Then
Err.Clear
Set wordRechnung = CreateObject("Word.Application")
wordRechnung.Visible = True ': objWW.WindowState = wdWindowStateMinimize 'lässt Prozess an der Instanz im Hintergrund laufen
Else
'wenn Instanz bereits besteht
wordRechnung.Activate
wordRechnung.Visible = True ': objWW.WindowState = wdWindowStateMaximize
End If
längeFirmenName = Len(wkb1.Worksheets("Tabelle1").Range("J8").Text)
wordRechnung.Application.Documents.Open (ThisWorkbook.Path & "\RechnungTest.docx")
If längeFirmenName = 0 Then
wordRechnung.ActiveDocument.Bookmarks("Anrede_oder_Firma").Range.Text = wkb1.Worksheets("Tabelle1").Range("G8").Text
Else
wordRechnung.ActiveDocument.Bookmarks("Anrede_oder_Firma").Range.Text = wkb1.Worksheets("Tabelle1").Range("J8").Text
End If
If wkb1.Worksheets("Tabelle1").Range("G8").Value = "Frau" Or wkb1.Worksheets("Tabelle1").Range("G8").Value = "Herr" Then
If wkb1.Worksheets("Tabelle1").Range("G8").Value = "Frau" Then
wordRechnung.ActiveDocument.Bookmarks("Anrede").Range.Text = "geehrte Frau"
Else
wordRechnung.ActiveDocument.Bookmarks("Anrede").Range.Text = "geehrter Herr"
End If
Else
wordRechnung.ActiveDocument.Bookmarks("Anrede").Range.Text = "geehrte/r Frau/Herr"
End If
wordRechnung.ActiveDocument.Bookmarks("Vorname").Range.Text = wkb1.Worksheets("Tabelle1").Range("H8").Text
wordRechnung.ActiveDocument.Bookmarks("Nachname1").Range.Text = wkb1.Worksheets("Tabelle1").Range("I8").Text
wordRechnung.ActiveDocument.Bookmarks("Strasse").Range.Text = wkb1.Worksheets("Tabelle1").Range("E10").Text
wordRechnung.ActiveDocument.Bookmarks("Nachname2").Range.Text = wkb1.Worksheets("Tabelle1").Range("I8").Text
wordRechnung.ActiveDocument.Bookmarks("Hausnummer").Range.Text = wkb1.Worksheets("Tabelle1").Range("F10").Text
wordRechnung.ActiveDocument.Bookmarks("PLZ").Range.Text = wkb1.Worksheets("Tabelle1").Range("G10").Text
wordRechnung.ActiveDocument.Bookmarks("Ort").Range.Text = wkb1.Worksheets("Tabelle1").Range("H10").Text
wordRechnung.ActiveDocument.Bookmarks("Kundennummer").Range.Text = wkb1.Worksheets("Tabelle1").Range("E8").Text
wordRechnung.ActiveDocument.Bookmarks("Auftragszeichen1").Range.Text = wkb1.Worksheets("Tabelle1").Range("E5").Text
wordRechnung.ActiveDocument.Bookmarks("Datum_des_Bestellungseingangs").Range.Text = wkb1.Mid(Worksheets("Tabelle1").Range("E5").Text, 7, 2) & "." & Mid(Worksheets("Tabelle1").Range("E5").Text, 5, 2) & ".20" & Mid(Worksheets("Tabelle1").Range("E5").Text, 3, 2)
wordRechnung.ActiveDocument.Bookmarks("Auftragszeichen2").Range.Text = wkb1.Worksheets("Tabelle1").Range("E5").Text
wordRechnung.ActiveDocument.Bookmarks("Datum_der_Rechnungserstellung").Range.Text = Format(Now, "dd.mm.yyyy")
wordRechnung.ActiveDocument.Bookmarks("Gesamtbetrag").Range.Text = wkb1.Worksheets("Tabelle1").Range("H2").Text
wordRechnung.ActiveDocument.Bookmarks("Gesamtpreis_ohne_USt").Range.Text = wkb1.Worksheets("Tabelle1").Range("F2").Text
wordRechnung.ActiveDocument.Bookmarks("Umsatzsteuer").Range.Text = wkb1.Worksheets("Tabelle1").Range("G2").Text
wordRechnung.ActiveDocument.Bookmarks("Versandkosten").Range.Text = wkb1.Worksheets("Tabelle1").Range("E2").Text
' ab hier beginnt die Erstellung der Tabelle in der Rechnung
' Cells(Zeile,Spalte)
For lauf = 2 To 20
If Len(wkb1.Worksheets("Tabelle1").Cells(lauf, 1).Text) > 0 Then
If lauf = 2 Then
PositionTabelleRechnung = wkb1.Worksheets("Tabelle1").Cells(lauf, 1).Text
AnzahlTabelleRechnung = wkb1.Worksheets("Tabelle1").Cells(lauf, 2).Text
GesamtpreisTabelleRechnung = wkb1.Worksheets("Tabelle1").Cells(lauf, 3).Text
Else
PositionTabelleRechnung = PositionTabelleRechnung & Chr(10) & wkb1.Worksheets("Tabelle1").Cells(lauf, 1).Text
AnzahlTabelleRechnung = AnzahlTabelleRechnung & Chr(10) & wkb1.Worksheets("Tabelle1").Cells(lauf, 2).Text
GesamtpreisTabelleRechnung = GesamtpreisTabelleRechnung & Chr(10) & wkb1.Worksheets("Tabelle1").Cells(lauf, 3).Text
End If
Else
End If
Next lauf
wordRechnung.ActiveDocument.Bookmarks("Position").Range.Text = PositionTabelleRechnung
wordRechnung.ActiveDocument.Bookmarks("Anzahl").Range.Text = AnzahlTabelleRechnung
wordRechnung.ActiveDocument.Bookmarks("Gesamtpreis_der_Position").Range.Text = GesamtpreisTabelleRechnung
' wordRechnung.ActiveDocument.PrintOut
SpeicherFile = ThisWorkbook.Path & "\" & wkb1.Worksheets("Tabelle1").Range("E8") & "\" & wkb1.Worksheets("Tabelle1").Range("E5").Text & "\" & "Rechnung_" & wkb1.Worksheets("Tabelle1").Range("E5").Text '& ".pdf"
wordRechnung.ActiveDocument.ExportAsFixedFormat OutputFileName:=SpeicherFile, ExportFormat:=wdExportFormatPDF
'WORD-Instanz schliessen
wordRechnung.Application.Quit (True)
'Variable leeren
Set wordRechnung = Nothing
wkb2.Close True
End Sub
|