Hallo,
ich möchte einmal Rechnungen und einmal Gutschriften per Wordserienbrief erstellen.
Es gibt Vorlagen in Eng(1x für Rechnungen und 1x für Gutschriften) und Deutsch(1x für Rechnungen und 1x für Gutschriften), also insgesamt 4 verschieden *.dot-Dateien.
Anbei der Quelltext mit Fragen in Quelltext zu finden, da immer als Ergebnis der Procedure immer nur eine Vorlage verwendet wird und diese nicht wie programmiert wechselt, warum ist dass so? (Gibt es eine elegantere Lösung) Vielen Dank im Voraus.
MfG Kommodore
'**********************Quelltext mit Fragen*******************************
Public Sub WordMailMerge(i As Integer, R As Boolean, deutsch As Boolean)
Dim wordanwendung As Object
Dim worddatei As Object
Dim sMergeDoc As String
Dim sSQL As String
Dim Xpfad As String
Xpfad = aktVerz() & "\"
'Pfad der Worddatei auslesen, die Datenbank und die Dokumentenvorlagen sind in
'einem Ordner!
If R = True Then
'Hier werden die Rechnungen für Engl/DE unterschieden
'Funktionert aber nicht wie gewollt, es wird immer nur eine Vorlage verwendet und
'diese bleibt immer Vorlage, obwohl ich die *.dot verändere!? Warum ist dies so??
If deutsch = True Then
sMergeDoc = Xpfad & "Rechnung_DE.dot"
ElseIf deutsch = False Then
sMergeDoc = Xpfad & "Rechnung_EN.dot"
End If
sSQL = "SELECT * FROM [SerienbriefÜbergabeTabelleGesamt] where id =" & i
Set wordanwendung = CreateObject("Word.Application")
Set worddatei = wordanwendung.Documents.Open(sMergeDoc)
With worddatei
.MailMerge.OpenDataSource _
Name:=CurrentDb.Name, _
Connection:="Table SerienbriefÜbergabeTabelleGesamt", _
SQLStatement:=sSQL
End With
'****************************************************
'Warum fragt Word jedesmal nach einem Passwort der Access-DB bei der Connection?
'Wenn ich dann abbrechen klicke, läuft die Anwendung trotzdem weiter!?
wordanwendung.Visible = False
'Die Wordanwendung läuft im Hintergrund
With worddatei.MailMerge
'.Destination = 1 'wdSendToPrinter
.Destination = 0 'wdSendToNewDocument
.Execute
End With
wordanwendung.ActiveDocument.SaveAs FileName:=Xpfad + "Word\" + "Vorlage.doc"
'Hat die Vorlage.doc nicht auch eine Dokumentenvorlage?
wordanwendung.ActiveDocument.Close
'die Vorlage ist nur für Rechnungen
worddatei.Close SaveChanges:=0
wordanwendung.Quit
Set worddatei = Nothing
Set wordanwendung = Nothing
ElseIf R = False Then
If deutsch = True Then
sMergeDoc = Xpfad & "Gutschrift_DE.dot"
ElseIf deutsch = False Then
sMergeDoc = Xpfad & "Gutschrift_EN.dot"
End If
sSQL = "SELECT * FROM [SerienbriefÜbergabeTabelleGesamtGutschriften] where id =" & i
Set wordanwendung = CreateObject("Word.Application")
Set worddatei = wordanwendung.Documents.Open(sMergeDoc)
With worddatei
.MailMerge.OpenDataSource _
Name:=CurrentDb.Name, _
Connection:="Table SerienbriefÜbergabeTabelleGesamtGutschriften", _
SQLStatement:=sSQL
End With
wordanwendung.Visible = False
With worddatei.MailMerge
'.Destination = 1 'wdSendToPrinter
.Destination = 0 'wdSendToNewDocument
.Execute
End With
wordanwendung.ActiveDocument.SaveAs FileName:=Xpfad + "Word\" + "Vorlage_Gutschriften.doc"
'Hat die Vorlage_Gutschriften.doc nicht auch eine Dokumentenvorlage?
'Die Vorlage ist nur für Gutschriften
wordanwendung.ActiveDocument.Close
'worddatei.PrintOut acPrintAll
worddatei.Close SaveChanges:=0
wordanwendung.Quit
Set worddatei = Nothing
Set wordanwendung = Nothing
End If
End Sub
'************************************************************
'Oder müssen die Vorlage.doc und Vorlage_Gutschriften.doc auch 4 mal unterschieden werden??
'************************************************************
Hallo,
Set worddatei = wordanwendung.Documents.Open(sMergeDoc)
ist nicht die richtige Methode, um ein neues DOC zu erzeugen. Damit wir die angegebene Datei lediglich geöffnet.
Benutz besser diese Methode, um ein neues DOC auf Bais der angebenen Vorlage zu erzeugen:
Set worddatei = wordanwendung.Documents.Add (sMergeDoc)
Die unterschiedlichen *.dot Dateien werden nicht als Dokumentenvorlage verwendet. Immer nur die zuerst verknüpfte *.dot bleibt dann als Dokumtenvorlage unverändert erhalten. Gibt es eine weitere Lösung zu diesem Beispiel mit mehreren dot-Dateien arbeiten zu können?
(gerne auch VBA-Quelltext) oder Anpassungen des vorhandenen Quelltext?
Mfg Kommodore :)
Hallo,
versteh nicht...
Es gibt keine "verknüpfte" dot-Datei. Nur während der Erstellung eines neuen Docs (.add) wird die angegebene Datei als Vorlage benutzt. Danach ist die Vorlage ohne weiteren Belang.
Bei der .Open-Methode wird lediglich eine Datei in Word geöffnet, ob dot oder doc...