Angeben eines Papierfachs in einem Makro (Microsoft Word)
Wenn Sie zum Drucken von Dokumenten Makros verwenden, wissen Sie bereits, dass das Makro den tatsächlichen Drucker angeben kann, an den die Ausgabe gesendet werden soll. Was ist, wenn Sie auch ein bestimmtes Papierfach angeben möchten, das auf diesem Drucker verwendet werden soll? Leider wird dies in Word ein bisschen klebrig. Eine kurze Tour und Erklärung helfen zu klären, warum dies der Fall ist.
Welches Papierfach von Word verwendet wird, hängt von einer Reihe von Faktoren ab, von denen einige nicht unter der Kontrolle von Word selbst stehen. Betrachten Sie beispielsweise Folgendes, von dem einige von der von Ihnen verwendeten Word-Version abhängen.
-
Wenn Sie das Dialogfeld Word-Optionen anzeigen und auf Erweitert klicken, können Sie in der Gruppe Drucken eine Standardablage angeben.
-
Wenn Sie die Registerkarte Seitenlayout des Menübands anzeigen und dann auf das Symbol unten rechts in der Gruppe Seite einrichten klicken, wird das Dialogfeld Seite einrichten angezeigt. Auf der Registerkarte Papierquelle können Sie angeben, welches Papierfach für die erste Seite und welches für nachfolgende Seiten verwendet werden soll.
Wenn Sie zum Drucken Strg + P * drücken und dann auf Eigenschaften klicken, können Sie häufig (abhängig von Ihrem Drucker) stöbern und ein Papierfach auswählen.
Daher verfügt Word über zwei Stellen, an denen Sie Papierfächer angeben können, und Ihr Drucker verfügt möglicherweise über eine eigene Stelle, an der Sie ein zu verwendendes Papierfach festlegen können. Dieser letzte Einstellungsbereich (über die Schaltfläche Eigenschaften) liegt außerhalb der „Reichweite“ von VBA. Im Dialogfeld werden Einstellungen im Druckertreiber und nicht in Word selbst angezeigt.
Erschwerend kommt hinzu, dass es keine eindeutige Erklärung dafür gibt, welche Einstellungen in einem bestimmten Druckauftrag Vorrang haben. Überschreiben die Einstellungen im Dialogfeld Seite einrichten die Druckertreibereinstellung? Überschreibt die Druckertreibereinstellung die Einstellung des Dialogfelds Word-Optionen? In welcher Beziehung steht die Einstellung des Dialogfelds Word-Optionen zu den Einstellungen für die Seiteneinrichtung? Du hast die Idee; Eine Vielzahl von Einstellungen in Kombination mit den unterschiedlichen Einstellungen des Druckertreibers und den Druckerfunktionen kann zu Verwirrung führen. Was unter bestimmten Bedingungen funktioniert, funktioniert unter anderen Bedingungen möglicherweise nicht.
Es gibt jedoch verschiedene Ansätze, mit denen Sie die Auswahl des Papierfachs über ein Makro steuern können. Es ist wichtig zu beachten, dass Ihr Makro Einstellungen im Dialogfeld Word-Optionen sowie im Dialogfeld Seite einrichten festlegen kann. Ihr Makro kann jedoch keine Einstellungen angeben, auf die über die Schaltfläche Eigenschaften des Dialogfelds Drucken zugegriffen werden kann. (Mehr dazu gleich.)
Wenn Sie die Einstellungen für das Seiten-Setup-Fach festlegen möchten, können Sie dazu ein Makro verwenden, das dem folgenden ähnelt:
Sub CustomPageSetup() Dim strTrayFirst As String Dim strTrayOther As String Dim lngTrayFirst As Long Dim lngTrayOther As Long 'Other setup code goes here strTrayFirst = System.PrivateProfileString(strIniFile, _ "Printer Trays", "Letter First") If strTrayFirst <> "" Then Select Case strTrayFirst Case "Automatic Sheet Feed" lngTrayFirst = wdPrinterAutomaticSheetFeed Case "Default Bin" lngTrayFirst = wdPrinterDefaultBin Case "Large Capacity Bin" lngTrayFirst = wdPrinterLargeCapacityBin Case "Large Format Bin" lngTrayFirst = wdPrinterLargeFormatBin Case "Lower Bin" lngTrayFirst = wdPrinterLowerBin Case "Manual Feed" lngTrayFirst = wdPrinterManualFeed Case "Middle Bin" lngTrayFirst = wdPrinterMiddleBin Case "Upper Bin" lngTrayFirst = wdPrinterUpperBin Case Else lngTrayFirst = wdPrinterLowerBin End Select End If strTrayOther = System.PrivateProfileString(strIniFile, _ "Printer Trays", "Letter Other") If strTrayOther <> "" Then Select Case strTrayOther Case "Automatic Sheet Feed" lngTrayOther = wdPrinterAutomaticSheetFeed Case "Default Bin" lngTrayFirst = wdPrinterDefaultBin Case "Large Capacity Bin" lngTrayOther = wdPrinterLargeCapacityBin Case "Large Format Bin" lngTrayOther = wdPrinterLargeFormatBin Case "Lower Bin" lngTrayOther = wdPrinterLowerBin Case "Manual Feed" lngTrayOther = wdPrinterManualFeed Case "Middle Bin" lngTrayOther = wdPrinterMiddleBin Case "Upper Bin" lngTrayOther = wdPrinterUpperBin Case Else lngTrayOther = wdPrinterUpperBin End Select End If With ActiveDocument.PageSetup .FirstPageTray = lngTrayFirst .OtherPagesTray = lngTrayOther End With End Sub
Dieses Makro legt trotz seiner Länge nur zwei Einstellungen fest: die Einstellung „Erste Seite“ und „Andere Seiten“ auf der Registerkarte „Papierquelle“ des Dialogfelds „Seite einrichten“. Das Makro ist ebenfalls nicht vollständig, sondern nur ein Beispiel dafür, wie die eigentliche „Einstellung“ in Ihrem eigenen Makro vorgenommen werden kann. Dieser bestimmte Code liest zwei Einstellungen aus einer INI-Datei (der Dateiname wird in der Zeichenfolge strIniFile angegeben) und nimmt die Einstellungen dann basierend auf den abgerufenen Werten vor. Sie müssten natürlich den Namen der INI-Datei angeben, die Sie verwenden möchten, und sicherstellen, dass sie so eingerichtet ist, dass sie die richtigen Informationen im richtigen Format enthält. (Das Einrichten von INI-Dateien würde den Rahmen dieses Tipps sprengen, es sind jedoch an anderer Stelle viele Informationen zum Thema verfügbar.) Sobald die Einstellungen aus der INI-Datei gelesen wurden, werden sie in Einstellungen übersetzt, die Word verstehen kann, und dann im endgültigen With … Ende Mit Struktur werden die Dialogfeldänderungen vorgenommen.
Aus den zuvor genannten Gründen funktioniert der in diesem Makro veranschaulichte Ansatz möglicherweise nicht in allen Situationen. Wenn dies nicht der Fall ist, können Sie die von Ihrem Drucker verwendeten Papierfächer möglicherweise nicht über ein Makro steuern. Denken Sie daran, dass die über die Schaltfläche Eigenschaften festgelegten Papierfächer tatsächlich von Ihrem Druckertreiber gesteuert werden und die Druckertreibereinstellungen für VBA nicht „sichtbar“ sind. Eine mögliche Lösung in dieser Situation besteht darin, einfach verschiedene Druckertreiber einzurichten. Befolgen Sie diese allgemeinen Schritte:
-
Bestimmen Sie, wie viele Papierfächer Sie auf dem Drucker verwenden möchten.
-
Definieren Sie in Windows einen neuen Drucker für jedes Papierfach, das Sie verwenden möchten.
Wenn Sie beispielsweise drei verschiedene Papierfächer verwenden möchten, definieren Sie drei Drucker mit jeweils einem Namen, der für ein Papierfach repräsentativ ist.
-
Klicken Sie mit der rechten Maustaste auf eine Druckerdefinition und ändern Sie die Eigenschaften des Druckers, damit er in das gewünschte Papierfach gedruckt wird.
-
Wiederholen Sie Schritt 3 für jede der anderen Druckerdefinitionen und stellen Sie sicher, dass Sie für jede andere Papierfächer unterschiedliche Papierfächer angeben.
Zu diesem Zeitpunkt haben Sie mehrere Druckerdefinitionen eingerichtet, die jeweils in einem anderen Papierfach auf demselben Drucker gedruckt werden. Sie können jetzt den gewünschten Drucker in einem Makro angeben, sodass der Ausdruck in das gewünschte Papierfach verschoben wird. Der einzige Nachteil dieser Lösung ist natürlich, dass sie einige Einrichtungsarbeiten erfordert. Wenn Sie in einem Büro mit 50 Benutzern arbeiten, müssen Sie sicherstellen, dass für alle 50 Benutzer jeder Drucker wie oben beschrieben definiert ist.
Denken Sie daran, dass das von Word zu verwendende Papierfach vom Benutzer durch Auswahl einer oder mehrerer Einstellungen in verschiedenen Dialogfeldern festgelegt werden kann, wie im ersten Teil dieses Tipps beschrieben. Aus diesem Grund haben einige Benutzer die SendKeys-Anweisung erfolgreich verwendet, um die Tastendrücke zu emulieren, mit denen ein Benutzer ein Papierfach angeben würde. (Informationen zu SendKeys finden Sie in der mit Word verfügbaren VBA-Online-Hilfe.)
Was SendKeys tatsächlich tut, ist, den Tastaturpuffer mit einer Reihe von Tastendrücken zu füllen, so wie sie vom Benutzer eingegeben würden. Es gibt jedoch ein potenzielles Problem mit SendKeys. Dies kann unzuverlässig sein, da nicht sichergestellt werden kann, dass die Tastenanschläge tatsächlich dort ausgeführt werden, wo Sie möchten. Unter einem Multithread-Betriebssystem (wie Windows) kann ein anderer Prozess eingreifen und die Befehle entgleisen.
Das Fazit ist, dass es leider keine „Einheitsgröße“ gibt
Lösung zur Auswahl eines Papierfachs mithilfe eines Makros. Eine Lösung, die für eine Person funktioniert, funktioniert möglicherweise nicht für eine andere. Aus diesem Grund müssen Sie experimentieren, um herauszufinden, welche Lösung für Sie am besten geeignet ist. Erwarten Sie jedoch nicht, dass sie für alle anderen funktioniert.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (9320) gilt für Microsoft Word 2007, 2010, 2013 und 2016. Eine Version dieses Tipps für die ältere Menüoberfläche von Word finden Sie hier: