ich habe einen Code zum Drucken eines Word-Dokumentes erstellt. Der funktioniert auch, aber leider nur unregelmäßig. Oft wird das Word-Template nicht gestartet. Wenn ich Excel schließe und neu starte, geht es wieder. Wird wohl etwas mit den Instanzen zu tun haben. Ich meine, mit 'wrdApp.Quit' am Schluss alle Instanzen zu schließen. Aber ich sehe meinen Fehler nicht. Kann mir jemand auf die Sprünge helfen?
Private Sub CommandButton1_Click()
Dim wrdApp As Word.Application, wrdDoc As Word.Document, aDok As Word.Document, strTemp As _
String, OUTPUTPATH As String, strFilenameDOC As String, strFilenamePDF As String, wrdopen As _
Boolean
Dim path As String, ENVString As String
ENVString = Environ("Index")
If Left(ENVString, 1) = "C" Then
path = "C:\Users\user\Desktop\"
Else
path = "Pfadname"
OUTPUTPATH_DOC = "Pfadname" & "\DOC\"
OUTPUTPATH_PDF = "Pfadname" & "\PDF\"
End If
strTemp = path & "Template_" & Cells(ActiveCell.Row, 147) & ".dotx" 'Pfad zur jeweiligen _
Vorlage (typabhängig)
Err.Clear
' Ort wo die Dokumente gespeichert werden
OUTPUTPATH = path
strFilenameDOC = Cells(ActiveCell.Row, 2)
strFilenamePDF = Cells(ActiveCell.Row, 2)
' Word öffnen
wrdopen = False
On Error Resume Next
Set wrdApp = GetObject(, "Word.Application") ' prüfen ob Word bereits geöffnet
If Err.Number 0 Then ' wenn Fehler, dann klären
Err.Clear
If wrdApp Is Nothing Then 'wenn noch nicht geöffnet, jetzt öffnen
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
End If
Else
If wrdApp Is Nothing Then 'wenn noch nicht geöffnet, jetzt öffnen
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
End If
wrdopen = True
End If
wrdApp.Visible = True
' Template laden und in neues Dokument kopieren
Set aDok = Documents.Add(Template:=strTemp, NewTemplate:=False, DocumentType:=0)
aDok.Activate
Application.Wait Now + TimeSerial(0, 0, 2)
MsgBox ("Dokument angelegt!")
'------ Dokument füllen!
' hier folgt der Aufbau des Dokumentes
aDok.ContentControls(1).Range.Text = Cells(ActiveCell.Row, 2) 'Art-Bezeichnung-Kopf
' Und so weiter bis alle Steuerelemente gefüllt sind
'------- Dokument drucken
aDok.PrintOut Background:=True
Application.Wait Now + TimeSerial(0, 0, 3)
aDok.Saved = True
' Dokument speichern
With aDok
.SaveAs2 OUTPUTPATH_DOC & "\" & strFilenameDOC
.ExportAsFixedFormat OUTPUTPATH_PDF & "\" & strFilenamePDF, wdExportFormatPDF
End With
aDok.Close
If wrdopen = False Then ' nur schließen, wenn Word beim Start nicht schon offen war
wrdApp.Quit
End If
' Variablen leeren
Set aDok = Nothing
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub
Bin dankbar für Eure Unterstützung.
Lieben Gruß
G.W.