Discussion:
Serienbriefe einzeln abspeichern
(zu alt für eine Antwort)
peter hogan
2003-08-11 10:06:54 UTC
Permalink
Hallo,

ich habe folgendes Problem.
ich würde gerne einen Serienbrief erstellen und
anschliessend die erzeugten dateien separat nach
dem Nachnamen abspeichern.
Die Liste stammt aus Excel.

Wie gehe ich da vor?
Und jetzt schon danke für Eure Hilfe

Gruß
Peter
Udo Joester
2003-08-11 11:40:57 UTC
Permalink
Hallo Peter,
Hallo NG,
"peter hogan" <***@gmx.de> schrieb im Newsbeitrag news:054701c35ff0$4ad727b0$***@phx.gbl...
Hallo,
Post by peter hogan
ich habe folgendes Problem.
ich würde gerne einen Serienbrief erstellen und
anschliessend die erzeugten dateien separat nach
dem Nachnamen abspeichern.
Die Liste stammt aus Excel.
Ich gehe einfach davon aus, wie Du einen Serienbrief erstellst ...

Dann solltest Du Dir eine VB Routine schreiben, die ungefähr so
aussieht:
------------------------------------------------------------------
Sub Ausgabe()
Rem "MySource.Doc" ist der Original Serienbrief

Dim MyLastRecord, MyFirstRecord As Integer
Dim MyCounter As Integer
Dim MyFileName As String
MyLastRecord =
Documents("MySource.doc").MailMerge.DataSource.LastRecord
MyFirstRecord =
Documents("MySource.doc").MailMerge.DataSource.FirstRecord
With Documents("MySource.doc").MailMerge.DataSource
MyFileName = "c:\MyPath\test\" & .DataFields("NACHNAME") & ".doc"
End With
For MyCounter = MyFirstRecord To MyLastRecord
Documents("MySource.doc").MailMerge.DataSource.ActiveRecord =
MyCounter
With Documents("MySource.doc").MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = MyCounter
.LastRecord = MyCounter
End With
.Execute Pause:=True
End With

ActiveDocument.SaveAs FileName:=MyFileName,
FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="",
ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=True, SaveNativePictureFormat:=False,
SaveFormsData:= _
False, SaveAsAOCELetter:=False
Documents(MyFileName).Close False
Next MyCounter

End Sub
-----------------------------------------------
Danach kannst Du Die Ausgabe() starten. Die Routine hangelt sich durch
Deinen Serienbrief und sollte die Dokumente einzeln im Verzeichnic
"C:\MyPath\test" unter dem gewünschten Dateinamen abgespeichern.

Ich kann den obigen Code leider im Moment nicht mehr testen, da ich
die Original-Datenquelle nicht mehr habe. Ggf. musst Du noch ein wenig
am Gerüst basteln.

hth


Udo Joester
==========
peter hogan
2003-08-11 12:01:21 UTC
Permalink
ich sage schonmal danke.

werde das skript mal probieren.
-----Originalnachricht-----
Hallo Peter,
Hallo NG,
Hallo,
Post by peter hogan
ich habe folgendes Problem.
ich würde gerne einen Serienbrief erstellen und
anschliessend die erzeugten dateien separat nach
dem Nachnamen abspeichern.
Die Liste stammt aus Excel.
Ich gehe einfach davon aus, wie Du einen Serienbrief
erstellst ...
Dann solltest Du Dir eine VB Routine schreiben, die
ungefähr so
---------------------------------------------------------
---------
Sub Ausgabe()
Rem "MySource.Doc" ist der Original Serienbrief
Dim MyLastRecord, MyFirstRecord As Integer
Dim MyCounter As Integer
Dim MyFileName As String
MyLastRecord =
Documents("MySource.doc").MailMerge.DataSource.LastRecord
MyFirstRecord =
Documents
("MySource.doc").MailMerge.DataSource.FirstRecord
With Documents("MySource.doc").MailMerge.DataSource
MyFileName = "c:\MyPath\test\" & .DataFields
("NACHNAME") & ".doc"
End With
For MyCounter = MyFirstRecord To MyLastRecord
Documents
("MySource.doc").MailMerge.DataSource.ActiveRecord =
MyCounter
With Documents("MySource.doc").MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = MyCounter
.LastRecord = MyCounter
End With
.Execute Pause:=True
End With
ActiveDocument.SaveAs FileName:=MyFileName,
FileFormat:=wdFormatDocument, LockComments:=False,
Password:="", _
AddToRecentFiles:=True, WritePassword:="",
ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=True,
SaveNativePictureFormat:=False,
SaveFormsData:= _
False, SaveAsAOCELetter:=False
Documents(MyFileName).Close False
Next MyCounter
End Sub
-----------------------------------------------
Danach kannst Du Die Ausgabe() starten. Die Routine
hangelt sich durch
Deinen Serienbrief und sollte die Dokumente einzeln im
Verzeichnic
"C:\MyPath\test" unter dem gewünschten Dateinamen
abgespeichern.
Ich kann den obigen Code leider im Moment nicht mehr
testen, da ich
die Original-Datenquelle nicht mehr habe. Ggf. musst Du
noch ein wenig
am Gerüst basteln.
hth
Udo Joester
==========
.
Helmut Weber
2003-08-11 12:09:08 UTC
Permalink
Hallo Peter,
eigentlich müsste da schon mal irgendwer eine perfekte
Lösung gestrickt haben. Ich habe jedenfalls keine. ;-(
Machbar ist das sicher. Arbeitsschritte:
1. Datei Seite einrichten Abschnittsbeginn neue Seite
2. Seriendruck in neues Dokument.
3. Mal kurz reinschauen, ob letzte Seite leer.
Wenn ja, bereinigen Abschnittswechsel entfernen.
Dann ist es nicht mehr so schwer. Aus dem großen
Dokument sind nun Anzahl(Abschnittwechsel) + 1 Dokumente
zu machen. Dafür müsste man vom Dokumentanfang bis
zu nächsten Abschnittswechsel oder Doc-Ende die Selection
definieren. Ausschneiden, neues Dokument aufmachen,
einfügen, Abschnittswechsel entfernen, speichern unter:
Reicht eine Nummer? Doc Schließen. Und weiter geht's.
Wenn Du Details brauchst, melde Dich wieder.
Gruss
Helmut Weber
"red.sys" & chr$(64) & "t-online.de"
peter hogan
2003-08-11 21:35:55 UTC
Permalink
seid mir nicht böse aber ich bin ein absoluter laie in
vba. ich muss nur dringendst eine lösung finden.

nochmal zu meinem problem:

ich habe eine worddatei mit entsprechendem text und
den feldnamen wie (Firma, Name , Vorname, etc)

Eine Exceldatei liefert die Daten.

Serienbrief erstellen soweit kein Problem.
Es sollen nur die einzelnen Seiten nicht in einem
gesamten Dokument ausgegeben werden, sondern jeweils
in eine neue datei, diese soll dann auch noch mit dem
felnnamen "Name" abgespeichert werden.

danke für eure geduld
-----Originalnachricht-----
Hallo Peter,
eigentlich müsste da schon mal irgendwer eine perfekte
Lösung gestrickt haben. Ich habe jedenfalls keine. ;-(
1. Datei Seite einrichten Abschnittsbeginn neue Seite
2. Seriendruck in neues Dokument.
3. Mal kurz reinschauen, ob letzte Seite leer.
Wenn ja, bereinigen Abschnittswechsel entfernen.
Dann ist es nicht mehr so schwer. Aus dem großen
Dokument sind nun Anzahl(Abschnittwechsel) + 1 Dokumente
zu machen. Dafür müsste man vom Dokumentanfang bis
zu nächsten Abschnittswechsel oder Doc-Ende die Selection
definieren. Ausschneiden, neues Dokument aufmachen,
Reicht eine Nummer? Doc Schließen. Und weiter geht's.
Wenn Du Details brauchst, melde Dich wieder.
Gruss
Helmut Weber
"red.sys" & chr$(64) & "t-online.de"
.
Lesen Sie weiter auf narkive:
Loading...