AW: Hallo Udo
17.05.2004 19:50:30
andre
Hallo Wulf ;-)
in diesem Fall muss man den Seriendruck per makro auslösen. Im AUTOTEXT legst Du die Texte mit der Codezahl als Name an. Im Word-Text kombinierst Du die Zahl aus der Excel-Tabelle mit einem markanten Zeichen oder Text:
Die Codezahl wird übrigens nur hier 2-stellig eingetragen, in Excel und AUTOTEXT ohne führende Null.
Das Makro ersetzt dann währen des Seriendruckes den markanten Text durch den Autotext der normal.dot (ansonsten muss man noch den Namen der Vorlage mit den Autotexten definieren).
Sub test()
Dim nName As String, Pfad As String
Dim AT As Template, ATE As AutoTextEntry, Wo As Range
nName = "Name" 'Ist bei mir ein Serienfeld und gibt dann die Dateinamen
Pfad = "C:" 'Wohin auch immer du es haben möchtest
With ActiveDocument.MailMerge
.DataSource.ActiveRecord = wdLastRecord
anzahl = .DataSource.ActiveRecord
flag = False
For Each x In .DataSource.DataFields
If x.Name = nName Then
flag = True
Exit For
End If
Next
.Destination = wdSendToNewDocument
For i = 1 To anzahl
.DataSource.ActiveRecord = i
dsname = Pfad & "\" & _
.DataSource.DataFields(nName).Value & Date + 1 & ".txt"
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
.Execute
ActiveDocument.Range.Find.Execute findtext:="^b", replacewith:=""
For j = 1 To Application.NormalTemplate.AutoTextEntries.Count
Set Wo = ActiveDocument.Content
Wo.Find.Execute findtext:="AUTOTEXT" & Format(j, "0#")
If Wo.Find.Found = True Then
Set ATE = Application.NormalTemplate.AutoTextEntries(j)
ATE.Insert Where:=Wo
End If
Next
Set fs = CreateObject("Scripting.FileSystemObject")
ActiveDocument.SaveAs FileName:=dsname, AddToRecentFiles:=False
Next i
.DataSource.FirstRecord = 1
End With
End Sub