VB Script fuer Datensatzdruck aus Serienbrief
Ich benoetige ein VB Script bzw Macro das Datensaetze eines Serienbriefs seperat an den Drucker sendet
Hi,
das Problem habe ich bereits im Word Forum stehen jedoch passt es vielleicht ein wenig besser zu den Spezis hier .
Wenn jmd den vollen Hintergrund wissen moechte:
Word 2003 Serienbrief seperater Datensatzdruck fuer Drucker-Heftfunktion
Das Macro soll in der Lage sein ein neues Dokument was aus einem Serienbrief erstellt wurde so an den Drucker zu senden das dieser die einzelnen Datensaetze heften kann und nicht ALLE Seiten die gedruckt werden heftet.
Problem dabei ist das Word alle Seiten als einen Druckauftrag abschickt. Leider fehlen mir die Kenntnisse um selber ein solchen Macro zu schreiben. Ich versuche mich grad ein wenig in das Thema einzulesen und habe diesen Unfug gebaut:
Sub mergeMailStaple()
Dim i As Long
Dim datensaetze As Integer
Console.Write ("Wie viele Datensaetze werden gedruckt ?") *
datensaetze = Console.Readline()
With ActiveDocument
For i = 1 To datensaetze
.PrintOut Range:=wdPrintFromTo, From:="s" & i, To:="s" & i
Next i
End With
End Sub
Jedoch weiss ich zum einen nicht ob Word ueberhaupt eine Eingabe erlaubt und wenn ja kann man sicherlich nur einen String aus der Eingabe ziehen und muss den umwandeln ? Jedenfalls gibt er Fehler 424 Object Required aus und meckert die Zeile mit dem Sternchen an.
Selbst wenn das ganze funktionieren wuerde hab ich immernoch keinen Schimmer was die Zeile bewirkt:
.PrintOut Range:=wdPrintFromTo, From:="s" & i, To:="s" & i
Wenn das jmd erklaeren koennte waere mir auch schon einmal sehr geholfen
Gruss
Florian
Hi,
das Problem habe ich bereits im Word Forum stehen jedoch passt es vielleicht ein wenig besser zu den Spezis hier .
Wenn jmd den vollen Hintergrund wissen moechte:
Word 2003 Serienbrief seperater Datensatzdruck fuer Drucker-Heftfunktion
Das Macro soll in der Lage sein ein neues Dokument was aus einem Serienbrief erstellt wurde so an den Drucker zu senden das dieser die einzelnen Datensaetze heften kann und nicht ALLE Seiten die gedruckt werden heftet.
Problem dabei ist das Word alle Seiten als einen Druckauftrag abschickt. Leider fehlen mir die Kenntnisse um selber ein solchen Macro zu schreiben. Ich versuche mich grad ein wenig in das Thema einzulesen und habe diesen Unfug gebaut:
Sub mergeMailStaple()
Dim i As Long
Dim datensaetze As Integer
Console.Write ("Wie viele Datensaetze werden gedruckt ?") *
datensaetze = Console.Readline()
With ActiveDocument
For i = 1 To datensaetze
.PrintOut Range:=wdPrintFromTo, From:="s" & i, To:="s" & i
Next i
End With
End Sub
Jedoch weiss ich zum einen nicht ob Word ueberhaupt eine Eingabe erlaubt und wenn ja kann man sicherlich nur einen String aus der Eingabe ziehen und muss den umwandeln ? Jedenfalls gibt er Fehler 424 Object Required aus und meckert die Zeile mit dem Sternchen an.
Selbst wenn das ganze funktionieren wuerde hab ich immernoch keinen Schimmer was die Zeile bewirkt:
.PrintOut Range:=wdPrintFromTo, From:="s" & i, To:="s" & i
Wenn das jmd erklaeren koennte waere mir auch schon einmal sehr geholfen
Gruss
Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82533
Url: https://administrator.de/contentid/82533
Ausgedruckt am: 20.11.2024 um 04:11 Uhr
9 Kommentare
Neuester Kommentar
eine lösung habe ich nicht, aber einen ansatz den du prüfen kannst. alle druckparameter lassen sich normalerweise über pcl-steuer codes übermitteln, z.b. benutze das fach X als ppaierkassette, duplex, heften, grafikqualität etc.
meistens hat so eine steuersequenz das format (ESC) (Funktion) oder (ECS) (Funktion) (Wert).
müsstest du noch rausknoblem, wie man solche steuersequenzen in ein word dockument einbindet
meistens hat so eine steuersequenz das format (ESC) (Funktion) oder (ECS) (Funktion) (Wert).
müsstest du noch rausknoblem, wie man solche steuersequenzen in ein word dockument einbindet
Hallo Florian,
also bin auch nicht immer Fan der Redmonder,
und bin kein besonders aktiver VBA-ler sondern VBScriptler.
Doch habe ich den Eindruck du hast Dich da etwas verlaufen und
die Redmondern sind hier gar nicht so böse.
Sorry nichts für ungut denn back to the roots:
Eigentlich geht es Dir bzw. Deiner Kollegin) ja schlicht darum,
daß der einzelne Sereienbrief auch einzeln geheftet wird.
Alles andere ist nur ein Versuch des Workarrounds.
Zumindest habe ich das so verstanden.
Sollte ich da falsch liegen, dann pls einfach mir nochmal erklären
Im Prinzip ist dann doch die Lösung ganz einfach.
Du erstellst gar keine Riesendatei mit allen Serienbriefen -
sondern jeweils einen Serienbrief nach dem anderen und
sendest ihn dann einfach einzeln an den Drucker (mit entsprechendem Heftauftrag).
Und diese Möglichkeit haben die Remonder auch gegeben.
Vereinfachend wäre:
Du könntest der Kollegin noch einen virtuellen Drucker einrichten "HefteMeinenAusdruck" .
Also schlicht eine Kopie des Druckers der heften kann
der dann von vornherein so eingestellt ist, daß er alle alle Ausdrucke heftet.
Dann bräuchtest Du nur noch den jeweiligen Druckauftrag an "HefteMeinenAusdruck"
zu senden und brauchst dich nicht um irgendwelchen Druckerzeichen (Esc etc )
zu kümmern.
Hilfreich könnte da sein ein kleiner google mit: Mail Merge vba word
Dies gibt dir u.A. Hilfe von den bösen Redmondern wie denn
Serienbriefe (Mail Merge) denn mit Scripten laufen
Mail Merge: Part I
http://msdn2.microsoft.com/en-us/library/aa140183.aspx
Mail Merge: Part II
http://msdn2.microsoft.com/en-us/library/aa140197.aspx
ciao pacobay
Übrigens ist es i.A. sowieso besser nicht riesige Druckdateien zu erstellen
sondern einzelne kleinere.
Je nach Umfang und Inhalt des Serienbriefes kannst du sonst so manchen
Drucker mit einer fetten SB-Datei in die Knie zwingen.
Schnell mal 1000 Kundeninfos mit den neusten Photos des Produktes
und du produzierst richtig Freude am Drucker.
By the way es ist sinnvoll die Druckaufträge mit einer kleinen fortlaufenden Nummer
zu versehen (z.B. DatensatzNr +1000). Dann kannst Du auf dem Ausdruck auch schnell nachvollziehen welche Ausdrucke / Datensätze denn (von dem nach Murhys LAW unweigerlich eintretenden) Papierstaus & Klammern zu Ende & falsche Papier etc betroffen sind.
also bin auch nicht immer Fan der Redmonder,
und bin kein besonders aktiver VBA-ler sondern VBScriptler.
Doch habe ich den Eindruck du hast Dich da etwas verlaufen und
die Redmondern sind hier gar nicht so böse.
Sorry nichts für ungut denn back to the roots:
Eigentlich geht es Dir bzw. Deiner Kollegin) ja schlicht darum,
daß der einzelne Sereienbrief auch einzeln geheftet wird.
Alles andere ist nur ein Versuch des Workarrounds.
Zumindest habe ich das so verstanden.
Sollte ich da falsch liegen, dann pls einfach mir nochmal erklären
Im Prinzip ist dann doch die Lösung ganz einfach.
Du erstellst gar keine Riesendatei mit allen Serienbriefen -
sondern jeweils einen Serienbrief nach dem anderen und
sendest ihn dann einfach einzeln an den Drucker (mit entsprechendem Heftauftrag).
Und diese Möglichkeit haben die Remonder auch gegeben.
Vereinfachend wäre:
Du könntest der Kollegin noch einen virtuellen Drucker einrichten "HefteMeinenAusdruck" .
Also schlicht eine Kopie des Druckers der heften kann
der dann von vornherein so eingestellt ist, daß er alle alle Ausdrucke heftet.
Dann bräuchtest Du nur noch den jeweiligen Druckauftrag an "HefteMeinenAusdruck"
zu senden und brauchst dich nicht um irgendwelchen Druckerzeichen (Esc etc )
zu kümmern.
Hilfreich könnte da sein ein kleiner google mit: Mail Merge vba word
Dies gibt dir u.A. Hilfe von den bösen Redmondern wie denn
Serienbriefe (Mail Merge) denn mit Scripten laufen
Mail Merge: Part I
http://msdn2.microsoft.com/en-us/library/aa140183.aspx
Mail Merge: Part II
http://msdn2.microsoft.com/en-us/library/aa140197.aspx
ciao pacobay
Übrigens ist es i.A. sowieso besser nicht riesige Druckdateien zu erstellen
sondern einzelne kleinere.
Je nach Umfang und Inhalt des Serienbriefes kannst du sonst so manchen
Drucker mit einer fetten SB-Datei in die Knie zwingen.
Schnell mal 1000 Kundeninfos mit den neusten Photos des Produktes
und du produzierst richtig Freude am Drucker.
By the way es ist sinnvoll die Druckaufträge mit einer kleinen fortlaufenden Nummer
zu versehen (z.B. DatensatzNr +1000). Dann kannst Du auf dem Ausdruck auch schnell nachvollziehen welche Ausdrucke / Datensätze denn (von dem nach Murhys LAW unweigerlich eintretenden) Papierstaus & Klammern zu Ende & falsche Papier etc betroffen sind.
Hallo Florian
Wie ich zwischenzeitlich gesehen habe, bist Du aber auch wohl auf anderem Wege vorangekommen. Hier ein Beispiel für eine einfache Inputbox . Ggf. sollte hier noch eine Überprüfung des Inputs bezüglich ist integer erfolgen.
Ich hatte währenddessen noch an der Antwort auf Dein Feedback geschrieben. Da dies im Prinzip trotdem noch gültig ist lasse ich es einfach dabei.
Aber wie immer Du nun auch vorgehen wirst: Viel Erfolg!
ciao pacobay
Also wenn dies mein Lösungsvorschlag wäre, empfände ich diesen auch als wenig sinnvoll.
Und das wäre noch eine sehr gelinde Ausdrucksweise.
Aber wie Du ja bereits angemerkt hast, ist dies durch den Einsatz entsprechender Macros/Scripte nicht notwendig.
Jedoch merkst Du an, dass dann ein weiteres Problem auftaucht:
Wenn ich Dich richtig verstehe, wäre es für Dich grundsätzlich kein Problem das Erstellen des jeweiligen Dokumentes und dessen Senden an den Drucker via Script/Macro zu automatisieren. (Möglicherweise könnte Dir die Verwendung der von mir angeführten Quellen dies noch vereinfachen.)
Weiterhin verstehe ich Deine Aussagen dergestalt, dass Du bisher über diesen Weg keine zufriedenstellenden Ergebnisse erzielen konntest, bzw. Du es bisher diesen Weg noch nicht versucht hast. Und Du dies wegen des festgestellten bzw. befürchteten Problems mit dem scheinbar willkürlichen Seitenumbruch zurückführst..
Ein entsprechender Makro bzw. Script nimmt jedoch einfach nur die entsprechende Vorlage, füllt die Merge-Felder mit den jeweiligen Daten des Datensatzes und sendet diesen an den Drucker.
Und im allgemeinen ist der Seitenumbruch keine Folge des Macros/ Scriptes sondern die Folge der Gestaltung der Serienbriefvorlage. Genauer gesagt ergibt sich der Seitenumbruch aus den diesbezüglichen Einstellungen der Vorlage und aus den unter Umständen stark unterschiedlichen Datensatzinhalten.
Bei einem einfachen Serienbrief mit Adresse, Anrede dürfte dies zu keiner wesentlichen Veränderungen führen und könnte durch z.B. einen gezielten Abschnittswechsel mit Seitenumbruch abgefangen werden. Sofern jedoch via Mergefelder unterschiedlich umfangreiche empfängergruppenspezifische Textpassagen eingefügt werden, dann wäre entsprechender „Vorsorgeaufwand“ natürlich auch umfangreicher.
Da ich aber zu wenig über die Art Eurer Serienbriefe weiß, ging dies zu sehr in Richtung Spekulation. Hier wären ggf. zusätzliche Infos hilfreich: Betriebssystem, Wordversion,
Art der Datenquelle. Sowie Infos bezüglich: Wie erfolgt der Zugriff auf die Datensätze (u.U. Info’s wie erfolgt deren Selektion.) Ein Beispiel für entsprechenden Serienbrief, Art und Umfang der Daten die eingefügt werden.
Mit solchen Infos wäre dann eine spezifischere Problemlösung möglich.
ciao pacobay
Wie ich zwischenzeitlich gesehen habe, bist Du aber auch wohl auf anderem Wege vorangekommen. Hier ein Beispiel für eine einfache Inputbox . Ggf. sollte hier noch eine Überprüfung des Inputs bezüglich ist integer erfolgen.
Dim strREQUESTs, strTITELs, defStrINPUTs, strVALUATIONb, strInputr
Sub MyInBox()
strREQUESTs = "Beispiels-Eingabeaufforderung"
strTITELs = "Beispiels-Meldungstitel im Script festgelegt"
defStrINPUTs = "Beispiels-Vorgabe-Eingabe-String"
strInputr = InputBox(strREQUESTs, strTITELs, defStrINPUTs) ' die Inputbox
MsgBox ("Der Rückgabewert/strInputr:" & Chr(9) & Chr(9) & strInputr & Chr(13))
End Sub 'MyInBox
Ich hatte währenddessen noch an der Antwort auf Dein Feedback geschrieben. Da dies im Prinzip trotdem noch gültig ist lasse ich es einfach dabei.
Aber wie immer Du nun auch vorgehen wirst: Viel Erfolg!
ciao pacobay
natuerlich waere es moeglich jeden Datensatz in ein eigenes Dokument zu ziehen und dann einzeln an den Drucker zu senden.
Also wenn dies mein Lösungsvorschlag wäre, empfände ich diesen auch als wenig sinnvoll.
Und das wäre noch eine sehr gelinde Ausdrucksweise.
Prinzipiell ist es ja mit dem Macro kein Problem, ...
Aber wie Du ja bereits angemerkt hast, ist dies durch den Einsatz entsprechender Macros/Scripte nicht notwendig.
Jedoch merkst Du an, dass dann ein weiteres Problem auftaucht:
dumm nur das es die Seiten nicht richtig einteilt
Wenn ich Dich richtig verstehe, wäre es für Dich grundsätzlich kein Problem das Erstellen des jeweiligen Dokumentes und dessen Senden an den Drucker via Script/Macro zu automatisieren. (Möglicherweise könnte Dir die Verwendung der von mir angeführten Quellen dies noch vereinfachen.)
Weiterhin verstehe ich Deine Aussagen dergestalt, dass Du bisher über diesen Weg keine zufriedenstellenden Ergebnisse erzielen konntest, bzw. Du es bisher diesen Weg noch nicht versucht hast. Und Du dies wegen des festgestellten bzw. befürchteten Problems mit dem scheinbar willkürlichen Seitenumbruch zurückführst..
Ein entsprechender Makro bzw. Script nimmt jedoch einfach nur die entsprechende Vorlage, füllt die Merge-Felder mit den jeweiligen Daten des Datensatzes und sendet diesen an den Drucker.
Und im allgemeinen ist der Seitenumbruch keine Folge des Macros/ Scriptes sondern die Folge der Gestaltung der Serienbriefvorlage. Genauer gesagt ergibt sich der Seitenumbruch aus den diesbezüglichen Einstellungen der Vorlage und aus den unter Umständen stark unterschiedlichen Datensatzinhalten.
Bei einem einfachen Serienbrief mit Adresse, Anrede dürfte dies zu keiner wesentlichen Veränderungen führen und könnte durch z.B. einen gezielten Abschnittswechsel mit Seitenumbruch abgefangen werden. Sofern jedoch via Mergefelder unterschiedlich umfangreiche empfängergruppenspezifische Textpassagen eingefügt werden, dann wäre entsprechender „Vorsorgeaufwand“ natürlich auch umfangreicher.
Da ich aber zu wenig über die Art Eurer Serienbriefe weiß, ging dies zu sehr in Richtung Spekulation. Hier wären ggf. zusätzliche Infos hilfreich: Betriebssystem, Wordversion,
Art der Datenquelle. Sowie Infos bezüglich: Wie erfolgt der Zugriff auf die Datensätze (u.U. Info’s wie erfolgt deren Selektion.) Ein Beispiel für entsprechenden Serienbrief, Art und Umfang der Daten die eingefügt werden.
Mit solchen Infos wäre dann eine spezifischere Problemlösung möglich.
ciao pacobay
Hallo Florian,
Bin mir nicht ganz sicher ob mein Eindruck überhaupt zutreffend ist,
aber sollte ich Dir irgendwie auf den Schlips getreten haben,
so lag dies gewiss nicht in meiner Absicht.
Auch ist mir nicht klar wann, wieso, warum bzw. wodurch.
Aber im Zweifelsfalle: Ausrückliches Sorry & peace!
Es führen sicherlich viele Wege nach Rom, und wenn Dir ein anderer Weg (als der von mir vorgeschlagene Weg) als der für Dich geeigneter Weg erscheint, dann habe ich kein Problem damit.
Ich hatte einfach den Eindruck gewonnen, dass Du eine Lösung für ein Problem suchst,
dass im Zweifelsfalle gar nicht auftaucht bzw einfach vermeidbar ist.
Daher wollte Dir nur aufzeigen, dass es Dir ganz einfach möglich ist
den jeweiligen Datensatz auch einzeln an den Drucker zu senden.
Folglich auch kein Problem mit dem Heften eines einzelnen Dokumentes
und daher auch Überlegungen wie man das Dokument wieder auseinander
bekommt bzw. unterteilt einfach unnötig sind.
Sprich Serienbrieferstellung via den in den Links dargestellten Wegen,
umgehen das Druckproblem von vornherein.
Aber wie auch immer, scheinbar hast Du nun ja auch eine Lösung
und der Käs ist wohl gegessen.
ciao pacobay
Bin mir nicht ganz sicher ob mein Eindruck überhaupt zutreffend ist,
aber sollte ich Dir irgendwie auf den Schlips getreten haben,
so lag dies gewiss nicht in meiner Absicht.
Auch ist mir nicht klar wann, wieso, warum bzw. wodurch.
Aber im Zweifelsfalle: Ausrückliches Sorry & peace!
ich wollte nicht die Vermutung aufkommen
lassen das ich deinen Beitrag nicht wuerdige
lassen das ich deinen Beitrag nicht wuerdige
Es führen sicherlich viele Wege nach Rom, und wenn Dir ein anderer Weg (als der von mir vorgeschlagene Weg) als der für Dich geeigneter Weg erscheint, dann habe ich kein Problem damit.
jedoch haben die Links nicht sonderlich
weitergeholfen da diese sich eher mit der
Erstellung und Bearbeitung eines Serienbriefs
befassen und nicht mit dem drucken an sich.
weitergeholfen da diese sich eher mit der
Erstellung und Bearbeitung eines Serienbriefs
befassen und nicht mit dem drucken an sich.
Ich hatte einfach den Eindruck gewonnen, dass Du eine Lösung für ein Problem suchst,
dass im Zweifelsfalle gar nicht auftaucht bzw einfach vermeidbar ist.
Daher wollte Dir nur aufzeigen, dass es Dir ganz einfach möglich ist
den jeweiligen Datensatz auch einzeln an den Drucker zu senden.
Folglich auch kein Problem mit dem Heften eines einzelnen Dokumentes
und daher auch Überlegungen wie man das Dokument wieder auseinander
bekommt bzw. unterteilt einfach unnötig sind.
Sprich Serienbrieferstellung via den in den Links dargestellten Wegen,
umgehen das Druckproblem von vornherein.
Aber wie auch immer, scheinbar hast Du nun ja auch eine Lösung
und der Käs ist wohl gegessen.
ciao pacobay