saschbert
Goto Top

Massen-Dateidruck Word, nur erste Seite

Viele *.doc aus dem Windows-Explorer drucken, jedoch immer nur die erste Seite

Hallo,

ich habe nun folgendes Problem:
Ich bekomme regelmäßig E-Mails mit etlichen Worddateien. Diese Worddateien sind allesamt quasi eine Art Formular, welches von Mitarbeitern in anderen Filialen genutzt/ausgefüllt wird, und dann per Mail an mich zurück geht. Größenordnung: ca. 500-1000 Worddokumente pro Woche.

Leider müssen die Dokumente alle ausgedruckt werden, da sie einer entsprechenden Abstimmung unterzogen werden und eine Unterschrift benötigen.

Bisherige Arbeitsschirtte:
Ich speichere täglich alle Dateien in einen Ordner. Dann markiere ich alle Dateien im Windows-Explorer, rechtsklicke und wähle "Drucken". Nach dem Bestätigen des Hinweises, dass ein Drucken vieler Dateien lange dauern kann, geht es auch schon los. Soweit so gut, und so reicht es mir auch "fast". Wäre da nicht immer diese blöde 2. Seite, die er mit ausdruckt. Oft steht auf der 2. Seite nur eine Zeile, die echt unerheblich ist. Daher mein Problem.

Was hätte ich gerne?
Gibt es die Möglichkeit diesen Prozess quasi zu optimieren? Ich stelle mir das so vor, dass ich eine Scriptdatei habe (Batch? VBS? ...), die ich in den Ordner kopiere, indem auch die ganzen Dateien liegen, und das Script dann nur noch starte, und es losgeht, er quasi jede Worddatei zum Druck bringt (was er bisher auch schon macht), aber dann beim Druckbefehl mitgibt, dass ausschließlich die erste Seite gedruckt werden darf.

Hintergrund:
Ich habe pro Woche teilweise bis zu 500 Seiten, die nur mit einer Zeile bedruckt sind. Wir nutzen dieses Papier in unserer Abteilung zwar als Schmierpapier, aber wir können garnicht genug Schmieren, wie wir Schmierpapier hierdurch bekommen. Und im Sinne der Umwelt, meiner Nerven, dem Raum-zeit-Kontinuum und noch vielem mehr bitte ich Euch hier um Hilfe. face-smile


Lieben Gruß
Saschbert


Edit und PS: Natürlich wünsche ich auch noch allen ein besinnliches Weihnachtsfest im Kreise der Liebsten und Familien.

Content-ID: 104613

Url: https://administrator.de/contentid/104613

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

64748
64748 22.12.2008 um 15:24:22 Uhr
Goto Top
Hallo SaschBert,

ich hab mal ausprobiert, ob das über ein Makro geht, das hat bei mir funktioniert. Also:
1) Worddokument öffnen
2) Extras->Makro->aufzeichnen
3) Datei->Drucken...
4) Seiten von 1-1
5) OK
6) Makroaufzeichnung anhalten
7) Nächstes Worddokument öffnen
8) das Makro hier ausführen.
Ich hab die Dokumente in PDF ReDirect Drucken lassen und das geht. Vielleicht kannst Du mit dem Ansatz was anfangen.

Markus
Saschbert
Saschbert 22.12.2008 um 16:10:15 Uhr
Goto Top
Hey Markus,

danke für den Ansatz, aber genau diesen Weg möchte ich ja nicht begehen. Wenn ich erst jede Worddatei einzeln öffnen muss, ist dies auch schon sehr aufwändig. Deswegen markiere ich die Dateien alle im Windows-Explorer und gehe per Rechtsklick auf drucken. Dadurch öffnet sich Word, druckt die Datei aus und schließt sich wieder. Und mit der nächsten Datei das gleiche.

Aber danke für den Ansatz. face-smile


Gruß
Saschbert (kleines B, ein Name ... *fg*)
64748
64748 22.12.2008 um 20:42:20 Uhr
Goto Top
Hallo nochmal,

dann sollte der nächste Schritt (basierend auf dem Makro) sein, entweder das Makro auf alle geöffneten Worddateien anwenden oder das Makro automatisch beim Starten eines Worddokuments zu starten. Da kann ich Dir aber nicht helfen.

Markus
Saschbert
Saschbert 23.12.2008 um 10:00:37 Uhr
Goto Top
Huhu Markus,

grundsätzlich ist Dein Ansatz garnicht schlecht. Ich habe jetzt ein Makro, mit dem ich nur die aktuelle Seite drucken lasse, welche beim Starten ja nun die erste Seite ist. Anschließend schließt sich Word wieder.

Sub PA_Start()
    Application.PrintOut Range:=wdPrintCurrentPage
    Application.Quit
End Sub

Das ganze lässt sich recht einfach von einem Batch aus starten, mit:
start winword.exe <Dokumentenname, zB. Test.doc> /mPA_Start

Nun muss ich mich nur noch einmal in dem Batchbereich des Forums umsehen, ob es da eine Möglichkeit gibt, quasi ein DIR zu ermitteln, welche .doc's es gibt, und diese entsprechend mit diesem Befehl zu füttern.

Also vielen Dank Dir!


Gruß
Saschbert
64748
64748 23.12.2008 um 10:22:45 Uhr
Goto Top
Hallo nochmal,

dann ist alles klar: Wenn alle doc-Dateien in einem Verzeichnis liegen dann reicht doch *.doc (sog. Wildcard) anstatt Test.doc um alle Worddateien in dem Verzeichnis zu öffnen.

Markus

EDIT: alternativ hilft Dir
dir /b *.doc
um eine Liste aller Worddokumente in dem Verzeichis zu bekommen. Damit kannst Du Dein Batchprogramm natürlich auch "füttern".
Saschbert
Saschbert 23.12.2008 um 11:56:29 Uhr
Goto Top
Hallo Markus,

und nochmals vorab "Danke"!

Es gestalltet sich ein wenig schwieriger, wie ich vermute. Durch eine einfache Änderung des Names hin zu Wildcard wird leider nur das erste Dokument gedruckt, das er findet, sprich man müsste irgendwie die Dateiliste ermitteln (dir /b *.doc), und dann irgendwie an eine hungrige Schleife verfüttern. Aber das nächste Problem dabei dürfte sein, dass der Rechner die Kriese bekommt, wenn er quasi mehr oder weniger mehrere 100 Öffnungsanfragen zu Word erhält, daher müsste ggf. mit im Batch aufgenommen werden, dass er wartet, bis Word wieder geschlossen ist.

Weiterhin wäre es wohl super, wenn wir den Listenbefehl um /s erweitern, quasi auf:
dir /b /s *.doc

Achso, und nur mal zum Vergleich, alleine heute kamen bereit 243 Worddateien an, und das ist wenig, immerhin sind die Feiertage. face-smile

Gruß und danke,
Saschbert


PS: Achso, die Worddateien können übrigens Umlaute und Leerzeichen enthalten, leider.

PPS: Also so klappt es nicht:
for /f %%a in ('dir /b /s *.doc') do (start winword.exe %%~nxa /mPA_Start)  
Wie schon vorher vermutet, versucht er so alle Dateien auf einmal zu öffnen. Ich habe es nur mit 5 Testdateien versucht, und das klappte schon, dass er sie öffnete, aber beim Drucken fing er dann an rumzuspinnen, und sagte mir, ich hätte noch andere Dialogboxen offen, und müsse diese erst schließen.
Sprich, ein Zeitversatz müsste hinein.
Saschbert
Saschbert 23.12.2008 um 13:45:19 Uhr
Goto Top
So, ich antworte mir jetzt mal selber, da es recht simpel ist/war, aber auch schon wieder das nächste Problem aufwirft. Damit der Folgebefehl wartet, reicht bei dem Startbefehl das simple Attribut /wait. Soweit, so gut, schauen wir uns das ganze mal komplett an:
for /f %%a in ('dir /b /s *.doc') do (start /wait winword.exe %%~nxa /mPA_Start)  

Habe das getestet, und es lief auch super, zumindest bis ich die Testdokumente in Unterordner schob. Die Rückgabe des Befehls dir /b /s gibt nur den Namen der Datei zurück, nicht aber den Pfad. Gibt es hier die Möglichkeit, ihm auch den Pfad mit zu übergeben?

Gruß
Saschbert


Edit-PS: Wenn ich im Shell den Befehl "dir /b /s *.doc > test.txt" eingebe, erfolgt die Ausgabe inkl. der Pfade. Was mache ich falsch?

Edit-PPS: Selten habe ich so einen Trottel wie mich kennenlernen dürfen. Da bastel ich mir hier etwas zurecht, klaue ... ähhh ... kopiere Codeschnippsel, weil ich selber davon zu wenig verstehe, und klaue auch noch falsch. Mir fiel auf, dass vorne die Variable %%a deklariert wird, aber bei dem Befehlsaufruf irgendwie %%~nxa steht ... wozu das ~nx da ist, weiß ich nicht, aber ich habe es entfernt und schon geht es. Also für alle nochmal die komplette richtige Lösung im nächsten Beitrag.
Saschbert
Saschbert 23.12.2008 um 14:02:39 Uhr
Goto Top
So, hier also die Lösung, wie versprochen. Solltet auch Ihr das Problem haben, in einer Ordnerstruktur sämtliche Worddateien ausdrucken zu müssen, jedoch nur immer die erste Seite, so funktioniert das folgendermaßen:

Zuerst legt Ihr im Word ein Makro an (Extras - Makros - Makro...) und benennt es. Bei mir heißt es PA_Start. Hier noch der Inhalt des Makros:
Sub PA_Start()
    Application.PrintOut Range:=wdPrintCurrentPage
    Application.Quit
End Sub
Der erste Befehl lässt nur die aktuelle Seite ausdrucken, und diese ist beim öffnen immer die erste Seite. Der zweite Befehl schließt Word für uns.


Nachdem das Makro angelegt ist, müssen wir nun nur noch irgendwie den ganzen Bereich automatisieren, und dies geht mit einer Batchdatei, die Ihr im Startpfad ablegt. Von dort aus wird dann jede Worddatei in dem Ordner und den Unterordnern gesucht, und entsprechend zum Druck gebracht. Und damit wird nicht auf einmal x-mal startet, wartet er solange mit den nächsten Aufruf, bis der erste Druck abgeschlossen und Word wieder beendet ist. Erstmal die Batchdatei (ohne Verschönerungen oder ähnlichem):
for /f %%a in ('dir /b /s *.doc') do (start /wait winword.exe %%a /mPA_Start)  
Und so sollte es nun funktionieren. Die genutzte Variable lautet hier %%a, indem der Pfad und der Dateiname enthalten ist. Die Attribute /b und /s vom DIR-Befehl erwirken, dass eine einfache Ausgabe der Dateinamen erfolgt (also ohne Größenangaben, usw ...), jedoch der komplette Pfad übergeben wird. Der START-Befehl startet dann noch das Programm winword.exe (M$ Word) mit den Parametern des Dateiname (%%a) und dem Hinweis, dass er das erstellte Makro direkt ausführen soll.


OK, das ist alles des Rätsels Lösung. Bedanken möchte ich mich vorallem bei Markus für die Hilfe. face-smile

Frohes Fest!
Saschbert
64748
64748 23.12.2008 um 14:10:43 Uhr
Goto Top
Hallo nochmal,

Zitat von @Saschbert:
Da bastel ich mir hier etwas zurecht, klaue ... ähhh
... kopiere Codeschnippsel, weil ich selber davon zu wenig verstehe,
und klaue auch noch falsch. Mir fiel auf.....

ja, das nennt man Lernen...face-smile
So mach ich das auch... und wenn Du dann so ein ähnliches Problem nochmal hast, dann weißt Du wie es geht (du vergisst es auch so schnell nicht mehr).

Auch Dir Frohes Fest

Markus
Saschbert
Saschbert 23.12.2008 um 14:35:34 Uhr
Goto Top
Vielen Dank!

Aber kaum ist man ein Stück des Erfolges wegen abgehoben, knallt man wieder auf den harten Boden der Tatsachen zurück. face-sad

Bei meinen Test, die alle unter C:\Test erfolgten, funktionierte alles super. Nun habe ich aber das Problem, sobald ein Ordnername Leerzeichen enthält, schneidet die Variable dort ab. Das kennt man ja als alter Hase aus allen Programmiersprachen, also fix ein paar Gänsefüßchen drum herum, und es klappt dennoch nicht. Die Suche erbrachte bisher auch nur, dass Gänsefüßchen zu nutzen seien, aber das klappt nicht.

Hast Du hier vielleicht nochmal eine Idee?

Gruß
Saschbert


PS: Der Vollständigkeit zuliebe anbei noch der Versuch:
for /f %%a in ('dir /b /s *.doc') do (start /wait winword.exe "%%a" /mPA_Start)  
Hatte es auch schon mit einem vorangestelltem / oder \ versucht, ebenso wie auch Hochkommata. Nichts geht ... face-sad
64748
64748 23.12.2008 um 17:08:36 Uhr
Goto Top
Hallo nochmal,

also wenn die Dateinamen egal sind, dann mach Dir "einfach" ein Batchprogramm, das in den Dateinamen alle Leerzeichen durch '_' ersetzt.
Mit den Gänsefüschen, da müsste ich selbst mal probieren, wenn mir was einfällt, dann werde ich es hier posten. Über Weihnachten wirst Du ja nicht soviele Word-Dokumente zum Ausdrucken haben.
Übrigens hatte ich noch eine Idee, vielleicht läuft das ganze besser (schneller), wenn Word nicht nach jedem Drucken geschlossen wird, sondern nur das Dokument.

Markus
64748
64748 28.12.2008 um 23:00:47 Uhr
Goto Top
Hallo Saschbert,

jetzt hab ich über das Problem mit den vielen Worddokumenten noch ein paarmal nachgedacht (war ja an Weihnachten genug Zeit).
Dateien umbenennen ginge auch mit Excel (ist zwar keine elegante Lösung aber wirkungsvoll): In die Arbeitsmappe kommt
1. Spalte: rename
2. Spalte: Dateiname
3. Spalte: neuer Dateiname
Wenn dann die neuen Dateinamen einfach durchnummeriert werden, dann kannst Du in Excel die Autofillfunktion nutzen:
1. Datei 0001.doc
2. Datei 0002.doc
und dann runterziehen bis meinetwegen 0788.doc...
Die Tabelle als Textdatei (Tabelle.txt) speichern, die Tabs durch Leerzeichen ersetzen (weiß nicht ob das notwendig ist), dann die Datei in bat umbenennen und ausführen, damit hast Du dann alle Worddokumente ohne Leerzeichen. Wenn Du copy anstatt rename verwendest, dann bleiben die alten Worddokumente erhalten.
Das war der erste Schritt.
Weiter glaube ich, dass es möglich ist, die ersten Seiten der Worddokumente nunächst mal in einem neuen Worddokument zu sammeln und das dann am Ende des Arbeitstages zum Drucker zu schicken. Du brauchst also ein Makro, das immer die erste Seite eines Worddokuments an die Datei "Sammel.doc" hinten anfügt...
Ich weiß aber nicht, wie das zu realisieren ist.

Gruß und guten Rutsch

Markus

PS: wenns dann mal läuft, poste mal die endgültige Lösung
Saschbert
Saschbert 29.12.2008 um 10:57:17 Uhr
Goto Top
Hallo Markus,

vorerst einmal vielen Dank für die Ideen. Leider sind beide so nicht umzusetzen. Das Hauptproblem besteht ja grundsätzlich bei Leerzeichen, sprich auch die in den Ordnernamen, bzw. im kompletten Pfad, und die kann ich nicht ändern, bzw. kann ich die nicht überall ändern. Und die Dateinamen der Worddateien darf ich auch nicht verändern.

Am einfachsten wäre es, wenn es quasi mit den " (Gänsefüßchen) gehen würde. Ich werde da auch mal nach suchen, vll. gibt es da eine Lösung.

Lieben Gruß und ich melde mich, wenn ich mehr weiß,
Sascha
64748
64748 29.12.2008 um 11:39:42 Uhr
Goto Top
Hallo nochmal,

damit (mit den Gänsefüßchen) machst Du besser nochmal einen neuen Thread hier im Forum auf. Ich weiß, dass hier für solche Fragen regelmäßig Lösungen gepostet werden, aber "hier unten" bekommt das niemand mehr mit.

Gruß

Markus
Saschbert
Saschbert 29.12.2008 um 13:17:41 Uhr
Goto Top
Super, vielen Dank!

Ich mach dann mal einen Beitrag im Batchforum auf, denn dies ist eigentlich auch eine Frage, die ja nichts mehr mit Office zu tun hat.

Ich wünsch Dir einen guten Rutsch!