In meinem Programm wird der Inhalt von Textboxen in Variablen gegeben und am Ende ein Worddokument (Bzw. PDF) erzeugt, in dem "Lücken" mit den Variablen gefüllt werden. Die Variablen werden alle richtig gefüllt, das kann ich aus der Exceltabelle auslesen, jedoch befinden sich im PDF am Ende veraltete Inhalte wieder, d.h. variablenwerte, die ich quasi 10 Testläufe früher mal eingegeben habe.
Das hier ist der Teil, bei dem mit Word interagiert wird:
Private Sub button_exit_Click()
'klick auf exit-button
Dim LastRow As Long, ws As Worksheet
Set ws = Sheets("Tabelle1")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 'Finds the last blank row
ws.Range("A" & LastRow).Value = mandant 'Adds the TextBox3 into Col A & Last Blank Row
ws.Range("A" & LastRow).Offset(0, 1).Value = projekttyp 'überträgt die variable in nächste Spalte zur rechten.
ws.Range("A" & LastRow).Offset(0, 2).Value = datum
ws.Range("A" & LastRow).Offset(0, 3).Value = datum_ende
ws.Range("A" & LastRow).Offset(0, 4).Value = mandant_ort
ws.Range("A" & LastRow).Offset(0, 5).Value = team
ws.Range("A" & LastRow).Offset(0, 7).Value = eingesparteskapital
ws.Range("A" & LastRow).Offset(0, 8).Value = vermiedenekosten
ws.Range("A" & LastRow).Offset(0, 9).Value = subventionen
ws.Range("A" & LastRow).Offset(0, 10).Value = marktanteil
ws.Range("A" & LastRow).Offset(0, 11).Value = investitioninfra
UserForm2.Show
' beste sache: Hiermit kann man alle eingaben auch in einer Word-datei speichern / als PDF exportieren
' ##########################################################
' Noch entwickeln:
' - Abfrage, ob Ordner für Mandanten bereits existiert
' ##########################################################
' Startet Word versteckt
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Dim i As Integer
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
Set wrdDoc = wrdApp.Documents.Add
' Erstellt den Inhalt des Dokumentes aus den eingegebenen Informationen
With wrdDoc
.Content.Font.NameAscii = "Century Gothic"
.Content.Font.Size = 10
.Content.Font.Bold = True
.Content.Font.TextColor = RGB(0, 70, 70)
.Content.InsertAfter ("Vom " & datum & " bis zum " & datum_ende & " haben Wir eine " & projekttyp & " mit " & mandant & " durchgeführt.")
.Content.InsertParagraphAfter
.Content.InsertAfter ("Dies ist ein Test der UserForm, mit der ein Bericht exportiert werden kann. Es folgen Werte, die über die Eingabemaske in das Excelsheet aufgenommen wurden.")
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter
.Content.InsertAfter ("Eingespartes Kapital:" & vbTab & eingesparteskapital)
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter
.Content.InsertAfter ("Vermiedene Kosten:" & vbTab & vermiedenekosten)
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter
.Content.InsertAfter ("Subventionen:" & vbTab & subventionen)
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter
.Content.InsertAfter ("Erhöhung des Marktanteils:" & vbTab & marktanteil)
.Content.InsertParagraphAfter
.Content.InsertParagraphAfter
.Content.InsertAfter ("Investitionen in örtliche Infrastruktur:" & vbTab & investitioninfra)
' Speichert das Dokument im Word-Format ab
' .SaveAs ThisWorkbook.Path & "/" & UMLAUT(mandant)
End With
' Erstellt einen Ordner mit dem Namen des Mandanten (Hier muss noch geprüft werden, ob der Ordner bereits existiert
MkDir ThisWorkbook.Path & "/" & mandant
' Exportiert den Text als PDF und speichert es in den Mandantenordner
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
ThisWorkbook.Path & "/" & mandant & "/" & Umlaut(projekttyp) & "_" & datumtag & datummonat & datumjahr & ".pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
' schaltet Word wieder sichtbar und beendet es gleichzeitig
wrdApp.Visible = True
wrdApp.Quit False
Das PDF gibt aber momentan immer nur aus: "Am 01.01.2017 haben Wir eine Energieffizienzanalyse mit Samsung durchgeführt." - Das sind a) die falschen Variablen und b) sind die neuhinzugefügten Teile (Absätze, neue Textbausteine) garnicht enthalten. Bis zum Hinzufügen der neuen Paragraphen funktionierte alles, nur jetzt scheint er die Variablen nicht mehr richtig zu übernehmen.
Entschuldigung für den wüsten Code, ich bringe mir das gerade noch selbst bei.
|