{"id":1529,"date":"2013-08-28T14:59:57","date_gmt":"2013-08-28T12:59:57","guid":{"rendered":"http:\/\/www.ramses.de\/?p=1529"},"modified":"2013-08-28T15:00:28","modified_gmt":"2013-08-28T13:00:28","slug":"faq-word-mehrere-dokumente-mit-wenigen-mausklicks-ausdrucken","status":"publish","type":"post","link":"https:\/\/www.ramses.de\/?p=1529","title":{"rendered":"FAQ Word &#8211; Mehrere Dokumente mit wenigen Mausklicks ausdrucken"},"content":{"rendered":"<h2><strong>Problem <\/strong><\/h2>\n<p>Es gibt immer wieder Situationen, in denen Sie alle in einem Verzeichnis vorhandenen Word-Dokumente ausdrucken m\u00f6chten. Sei es, um beispielsweise Kopien aller Rechnungen an einen bestimmten Kunden oder mehrere, zu einer Dokumentation geh\u00f6rende Dokumente in einem Durchgang auszugeben.<\/p>\n<p>Sie k\u00f6nnen diese Aufgabe \u00fcber das Dialogfeld Datei-\u00d6ffnen oder den Explorer von Windows erledigen, aber wir m\u00f6chten Ihnen ein kleines Makro vorstellen, mit dem Sie in Zukunft wesentlich schneller zum Ziel kommen werden. Geben Sie dazu das folgende Listing in ein neues Modul der Dokumentvorlage NORMAL.DOT ein:<\/p>\n<h2><strong>L\u00f6sung <\/strong><\/h2>\n<p>Option Explicit<br \/>\nPrivate Type BROWSEINFO<br \/>\nhwndOwner As Long<br \/>\npidlRoot As Long<br \/>\nlpszDisplayName As String<br \/>\nlpszTitle As String<br \/>\nulFlags As Long<br \/>\nBFFCALLBACK As Long<br \/>\nLPARAM As Long<br \/>\niImage As Integer<br \/>\nEnd Type<br \/>\nPrivate Declare Function SHBrowseForFolder Lib _<br \/>\n&#8222;shell32.dll&#8220; (FolderStruct As BROWSEINFO) As Long<br \/>\nPrivate Declare Function SHGetPathFromIDList _<br \/>\nLib &#8222;shell32.dll&#8220; (ByVal LPCITEMIDLIST As Long, _<br \/>\nByVal lpStr As String) As Long<br \/>\nPrivate Const OFN_ALLOWMULTISELECT = &amp;H200<br \/>\nPrivate Const OFN_CREATEPROMPT = &amp;H2000<br \/>\nPrivate Const OFN_ENABLEHOOK = &amp;H20<br \/>\nPrivate Const OFN_ENABLETEMPLATE = &amp;H40<br \/>\nPrivate Const OFN_ENABLETEMPLATEHANDLE = &amp;H80<br \/>\nPrivate Const OFN_EXPLORER = &amp;H80000<br \/>\nPrivate Const OFN_EXTENSIONDIFFERENT = &amp;H400<br \/>\nPrivate Const OFN_FILEMUSTEXIST = &amp;H1000<br \/>\nPrivate Const OFN_HIDEREADONLY = &amp;H4<br \/>\nPrivate Const OFN_LONGNAMES = &amp;H200000<br \/>\nPrivate Const OFN_NOCHANGEDIR = &amp;H8<br \/>\nPrivate Const OFN_NODEREFERENCELINKS = &amp;H100000<br \/>\nPrivate Const OFN_NOLONGNAMES = &amp;H40000<br \/>\nPrivate Const OFN_NONETWORKBUTTON = &amp;H20000<br \/>\nPrivate Const OFN_NOREADONLYRETURN = &amp;H8000<br \/>\nPrivate Const OFN_NOTESTFILECREATE = &amp;H10000<br \/>\nPrivate Const OFN_NOVALIDATE = &amp;H100<br \/>\nPrivate Const OFN_OVERWRITEPROMPT = &amp;H2<br \/>\nPrivate Const OFN_PATHMUSTEXIST = &amp;H800<br \/>\nPrivate Const OFN_READONLY = &amp;H1<br \/>\nPrivate Const OFN_SHAREAWARE = &amp;H4000<br \/>\nPrivate Const OFN_SHAREFALLTHROUGH = 2<br \/>\nPrivate Const OFN_SHARENOWARN = 1<br \/>\nPrivate Const OFN_SHAREWARN = 0<br \/>\nPrivate Const OFN_SHOWHELP = &amp;H10<br \/>\nPrivate Const BIF_RETURNONLYFSDIRS = &amp;H1<br \/>\nPrivate Const BIF_DONTGOBELOWDOMAIN = &amp;H2<br \/>\nPrivate Const BIF_STATUSTEXT = &amp;H4<br \/>\nPrivate Const BIF_RETURNFSANCESTORS = &amp;H8<br \/>\nPrivate Const BIF_BROWSEFORCOMPUTER = &amp;H1000<br \/>\nPrivate Const BIF_BROWSEFORPRINTER = &amp;H2000<br \/>\nPrivate Const BIF_BROWSEINCLUDEFILES = &amp;H4000<\/p>\n<p>Function AddSlash$(aPath$)<br \/>\nAddSlash = aPath<br \/>\nIf Trim$(aPath) = &#8222;&#8220; Then Exit Function<br \/>\nIf Right$(aPath, 1) = &#8222;\\&#8220; Then Exit Function<br \/>\nAddSlash = aPath + &#8222;\\&#8220;<br \/>\nEnd Function<\/p>\n<p>Sub procVerzeichnisDrucken()<br \/>\nDim strPath As String<br \/>\nDim strDOCName As String<br \/>\nDim dlg As Dialog<br \/>\nSet dlg = Dialogs(wdDialogToolsOptionsFileLocations)<br \/>\nWith dlg<br \/>\n.Path = &#8222;DOC-Path&#8220;<br \/>\n.Update<br \/>\nstrPath = .Setting<br \/>\nEnd With<br \/>\nstrPath = OpenFolder(&#8222;Verzeichnis drucken:&#8220;)<br \/>\nIf strPath = &#8222;&#8220; Then Exit Sub<br \/>\nstrPath = AddSlash(strPath)<br \/>\nstrDOCName = Dir$(strPath &amp; &#8222;*.doc&#8220;)<br \/>\nOn Error Resume Next<br \/>\nWhile strDOCName &lt;&gt; &#8222;&#8220;<br \/>\nDoEvents<br \/>\nErr = 0<br \/>\nApplication.PrintOut FileName:=strPath &amp; strDOCName<br \/>\nIf Err &lt;&gt; 0 Then<br \/>\nBeep<br \/>\nIf MsgBox(&#8222;Das Dokument &#8218;&#8220; &amp; strDOCName &amp; _<br \/>\n&#8222;&#8218; konnte nicht gedruckt werden.&#8220;, _<br \/>\nvbOKCancel + vbExclamation, _<br \/>\n&#8222;!!! Problem !!!&#8220;) = vbCancel Then<br \/>\nExit Sub<br \/>\nEnd If &#8218;Abbrechen?<br \/>\nEnd If &#8218;Err&lt;&gt; 0&#8230;<br \/>\nstrDOCName = Dir$()<br \/>\nWend<br \/>\nEnd Sub<br \/>\nFunction OpenFolder(strTitle) As String<br \/>\nDim BI As BROWSEINFO<br \/>\nDim R As Long<br \/>\nDim lpBuffer As String * 254<br \/>\nWith BI<br \/>\n.hwndOwner = 0<br \/>\n.lpszDisplayName = lpBuffer<br \/>\n.lpszTitle = strTitle<br \/>\n.ulFlags = 0<br \/>\n.BFFCALLBACK = 0<br \/>\n.LPARAM = 0<br \/>\nEnd With<br \/>\nR = SHBrowseForFolder(BI)<br \/>\nR = SHGetPathFromIDList(R, lpBuffer)<br \/>\nOpenFolder = Left$(lpBuffer, InStr(lpBuffer, _<br \/>\nChr(0)) &#8211; 1)<br \/>\nEnd Function<\/p>\n<p>Wenn Sie in Zukunft alle Dokumente aus einem bestimmten Verzeichnis drucken m\u00f6chten, dr\u00fccken Sie Alt+F8, um die Makroauswahl aufzurufen. Dort starten Sie das Makro per Doppelklick auf den Eintrag &#8222;procVerzeichnisDrucken&#8220;.<\/p>\n<p>Das Makro zeigt zun\u00e4chst eine Ordnerauswahl an, \u00fcber die Sie das Verzeichnis festlegen, dessen Inhalt ausgedruckt werden soll. Anschlie\u00dfend liest das Makro den Inhalt des Verzeichnisses aus und \u00fcbergibt jedes darin gefundene Dokument zum Ausdruck an Word. Kann eines der im gew\u00e4hlten Verzeichnis vorhandenen Dokumente nicht ausgedruckt werden, informiert Sie das Makro mit einer kleinen Meldung dar\u00fcber. Sie k\u00f6nnen dann auf Ok klicken, um das Dokument zu \u00fcberspringen oder die Ausf\u00fchrung des Makros mit Abbrechen beenden.<\/p>\n<p>Ben\u00f6tigen Sie diese Funktion h\u00e4ufiger, empfiehlt sich die Einrichtung eines eigenen Men\u00fceintrags wie zum Beispiel Datei-Drucken\/Verzeichnis oder Datei-Verzeichnisinhalt drucken. Gehen Sie dazu wie folgt vor:<\/p>\n<p>Klicken Sie mit der rechten Maustaste in die Men\u00fcleiste und w\u00e4hlen Sie das Kontextmen\u00fc Anpassen an.<br \/>\nWechseln Sie auf die Registerkarte &#8222;Befehle&#8220;.<br \/>\nMarkieren Sie in der Liste Kategorien den Eintrag &#8222;Makros&#8220;.<br \/>\nZiehen Sie den Eintrag des Makros &#8222;procVerzeichnisDrucken&#8220; in das Men\u00fc Datei hinter den Eintrag Drucken.<\/p>\n<p>Klicken Sie mit der rechten Maustaste auf das neue Symbol und geben Sie im Eigenschaften-Men\u00fc als Name zum Beispiel Datei-Verzeichnisinhalt drucken ein.<\/p>\n<p>Klicken Sie im &#8222;Anpassen&#8220;-Dialog auf Schlie\u00dfen.<br \/>\nIn Zukunft k\u00f6nnen Sie das Makro bei Bedarf \u00fcber den wie oben erl\u00e4utert eingerichteten Men\u00fceintrag abrufen.<\/p>\n<p>F\u00fcr den interessierten Anwender hier noch einige Anmerkungen zur Funktionsweise des Makros:<br \/>\nSub AlleDOCsAusVerzeichnisDrucken()<br \/>\nstrPath = OpenFolder(&#8222;Verzeichnis drucken:&#8220;)<br \/>\nIf strPath = &#8222;&#8220; Then Exit Sub<\/p>\n<p>Im ersten Schritt wird \u00fcber eine API-Funktion des Systems die Ordnerauswahl angezeigt. Wurde kein Ordner gew\u00e4hlt, erfolgt an dieser Stelle die Beendigung des Makros.<br \/>\nstrDOCName = Dir$(strPath &amp; &#8222;*.doc&#8220;)<br \/>\nOn Error Resume Next<br \/>\nWhile strDOCName &lt;&gt; &#8222;&#8220;<\/p>\n<p>Mit Hilfe der Funktion &#8222;Dir$()&#8220; werden in einer Schleife alle Dokumente im ausgew\u00e4hlten Verzeichnis ausgelesen. Liefert die Funktion eine leere Zeichenkette zur\u00fcck, sind keine weiteren Dokumente vorhanden und die Schleife wird verlassen.<br \/>\nDoEvents<br \/>\nErr = 0<br \/>\nApplication.PrintOut FileName:=strPath &amp; strDOCName<br \/>\nIf Err &lt;&gt; 0 Then<br \/>\nBeep<br \/>\nIf MsgBox(&#8222;Das Dokument &#8218;&#8220; &amp; strDOCName &amp; _<br \/>\n&#8222;&#8218; konnte nicht gedruckt werden.&#8220;, _<br \/>\nvbOKCancel + vbExclamation, _<br \/>\n&#8222;!!! Problem !!!&#8220;) = vbCancel Then<br \/>\nExit Sub<br \/>\nEnd If &#8218;Abbrechen?<br \/>\nEnd If &#8218;Err&lt;&gt; 0&#8230;<\/p>\n<p>\u00dcber den Aufruf von &#8222;Application.PrintOut&#8220; schicken wir das Dokument an den Drucker. Kommt es dabei zu einem Fehler, wird eine entsprechende Meldung angezeigt. Ein Klick auf Ok ignoriert den Fehler und f\u00fchrt das Makro weiter aus, ein Klick auf Abbrechen f\u00fchrt an dieser Stelle zum Verlassen des Makros.<\/p>\n<p>strDOCName = Dir$()<br \/>\nWend<br \/>\nEnd Sub<\/p>\n<p>Mit der Anweisung &#8222;strDOCName = Dir$()&#8220; wird dann die Suche nach weiteren Dokumenten veranlasst. Ist die R\u00fcckmeldung eine leere Zeichenkette, so ist die Schleife beendet und das Makro hat seine Aufgabe erf\u00fcllt.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Es gibt immer wieder Situationen, in denen Sie alle in einem Verzeichnis vorhandenen Word-Dokumente ausdrucken m\u00f6chten. Sei es, um beispielsweise Kopien aller Rechnungen an &#8230; <a title=\"FAQ Word &#8211; Mehrere Dokumente mit wenigen Mausklicks ausdrucken\" class=\"read-more\" href=\"https:\/\/www.ramses.de\/?p=1529\" aria-label=\"Mehr Informationen \u00fcber FAQ Word &#8211; Mehrere Dokumente mit wenigen Mausklicks ausdrucken\">Weiterlesen &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,44],"tags":[71,68],"class_list":["post-1529","post","type-post","status-publish","format-standard","hentry","category-faq","category-word","tag-drucken","tag-word-2003"],"_links":{"self":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/1529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1529"}],"version-history":[{"count":2,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/1529\/revisions"}],"predecessor-version":[{"id":1531,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/1529\/revisions\/1531"}],"wp:attachment":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}