Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Serienbrief mit Word erstellen aber mit mehreren *.dot (Dokumentvorlagen)

Begonnen von Kommodore, Dezember 02, 2011, 14:04:39

⏪ vorheriges - nächstes ⏩

Kommodore

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??
'************************************************************

DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Kommodore

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  :)

DF6GL

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...



Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access