expertenaustausch > microsoft.* > microsoft.word.vba

Frank Prendel (24.11.2004, 09:34)
Hallo Forum,

Hallo Newsgroup,

nun bin ich hier, hoffentlich richtig. Zunächst einmal, leider programmiere
ich null vba, weshalb ich hier um rat frage.

Zunächt habe ich hier ein VBA Script:
Quelle:

[code]
Sub JederDatensatzInEineEigenstandigeDatei_1()
With ActiveDocument.MailMerge
If .MainDocumentType = wdNotAMergeDocument Then
MsgBox "Das aktive Dokument ist kein Seriendruckhauptdokument."
Exit Sub
End If
.DataSource.ActiveRecord = wdLastRecord
Anzahl = .DataSource.ActiveRecord
If Anzahl = 0 Then
MsgBox "Es wurden keine Datensätze gefunden."
Exit Sub
End If
.Destination = wdSendToNewDocument
For i = 1 To Anzahl
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
.Execute
ActiveDocument.Range.Find.Execute FindText:="^b", ReplaceWith:=""
dsname = Verzeichnis & "\" & Praefix & Format(i, "0000") & ".doc"
ActiveDocument.SaveAs FileName:=dsname, AddToRecentFiles:=False
ActiveDocument.Close
Next i
.DataSource.FirstRecord = 1 'be smart
End With
MsgBox Anzahl & " Dateien erstellt."
End Sub
[/code]

Nun möchte ich, das alle Dokumente zusätzlich zu einem zu wählenden Drucker
geschickt werden (Alle zusammen, so das ich net jedesmal klicken muss). Ich
hab mir überlegt, das es folgendermaßen funktionieren könnte, wobei noch
offen ist, ob dies ein weiteres makro wird oder angehängt an das vorhandene
wird:

1)

Private Const Verzeichnis = "C:\WINNT\Profiles\druckerordner\"
logpfad festlegen
pfadangaben festlegen

dann müsste das verzeichnis nach dateien durchsucht werden *.doc

dann eine zum drucker geleitet werden,
eine zeile log mit ok oder nicht ok ob die datei zum drucker geliefert wurde
oder eben nicht - geschrieben werden

die datei bei erfolg gelöscht werden und die nächste bearbeitet werden.

gefunden habe ich dieses, ebenfalls auf der o.a. Seite:
Sub SeriendruckOhneBestaetigung()
If ActiveDocument.MailMerge.MainDocumentType = wdNotAMergeDocument Then
MsgBox "Das vorliegende Dokument ist kein Seriendruckhauptdokument."
Exit Sub
End If
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
ActiveDocument.PrintOut Background:=False
ActiveDocument.Close SaveChanges:=False
End Sub

oder

Sub SeriendruckMitBestaetigung()
If ActiveDocument.MailMerge.MainDocumentType = wdNotAMergeDocument Then
MsgBox "Das vorliegende Dokument ist kein Seriendruckhauptdokument."
Exit Sub
End If
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
Dialogs(wdDialogFilePrint).Show
ActiveDocument.Close SaveChanges:=False
End Sub

weiss jemand rat??

Frank Prendel
Thomas Gahler (24.11.2004, 09:44)
Hallo Frank

Ich Frage mich was du mit deinem Ansatz bezwecken willst, denn der
Seriendruck ist da um eine Menge von Daten mit einem Dokument zu mischen und
dieses auszudrucken (ob gemischt oder direkt an den Drucker).
Das Makro zu abspeichern jedes Dokuments in eine Datei dient in erster Linie
dazu, dann man dokumentiert ist was man mal gedruckt und versendet hat
(entweder macht man ein grosses gemischtes Dokument [Standardfunktion] oder
als einzelen Dateien [via Makro]).

Du willst spiltten und jede Datei dann wieder drucken? Wieso nihct einfach
Serienbrief drucken und dann splitten?
Frank Prendel (24.11.2004, 10:22)
Hallo Thomas Gahler,

das ist relativ einfach zu Erklären:
unser "Drucker" ist ein Faxgerät, der die erste (und nur die erste) Zeile
des Dokuments auswertet und entsprechend rausfaxt.

Pro druckauftrag ein Fax. Da die Serienfax-Funktion unter Word ein Dokument
daraus macht, sendet er diese dann an einen! Empfänger, da die
Serienbrieffunktion ein Dokument daraus macht.

Mit dem angegeben Script bekomme ich zumindest ein Dokument pro Datensatz,
was auch so gewollt ist, da eine Datei = Ein Datensatz = 1 Fax.

Und bei 10000 Datensätzen wäre es halt umständlich, alle zu markieren und zu
drucken. Zumal, und das ist die Herausforderung bzw eine Anforderung für das
Script dann später, nach und nach kontrolliert an den Drucker geschickt
werden soll. Eben alle Dokumente aus einem festgelegtem Ordner.

Das ist das ganze Geheimnis :-)
Danke für deinen Einwand, das konnte natürlich niemand wissen ;-)

Ich glaub, das ist verständlich geschrieben, wenn nciht, einfach noch mal
Fragen.

Gruß

Frank Prendel

PS: Leider verstehe ich kein Wort VBA, sonst hätte ich das selbst versucht.
-Verzeichnis definieren halt im Makro
- Verzeichnis wird "durchgezählt)
- ein Dokument wird an den Drucker übertragen
- Logzeile wird geschrieben (Datum, Uhrzeit, Status, Dateiname reicht)
- nächstes Dokument wird genommen
- alle 10 Minuten 10 Dokumente (variabel einzustellen)

so die PERFEKTE Version ;-)

"Thomas Gahler" <wurzel2.NO> schrieb im Newsbeitrag
news:1568
[..]
Ähnliche Themen