Specificare un vassoio carta in una macro (Microsoft Word)
Se si utilizzano macro per stampare documenti, si sa già che la macro può specificare la stampante effettiva a cui inviare l’output. E se si desidera specificare anche un vassoio carta specifico da utilizzare su quella stampante? Sfortunatamente, questo diventa un po ‘un wicket appiccicoso in Word. Un breve tour e una spiegazione aiuteranno a chiarire perché questo è il caso.
Il vassoio della carta utilizzato da Word dipende da una serie di fattori, alcuni dei quali non sono sotto il controllo di Word stesso. Ad esempio, considera quanto segue, alcuni dei quali dipendono dalla versione di Word che stai utilizzando.
-
Se si visualizza la finestra di dialogo Opzioni di Word e si fa clic su Avanzate, nel gruppo Stampa è possibile specificare un vassoio predefinito.
-
Se visualizzi la scheda Layout di pagina della barra multifunzione e fai clic sull’icona in basso a destra del gruppo Imposta pagina vedrai la finestra di dialogo Imposta pagina. Nella scheda Alimentazione carta è possibile specificare quale vassoio carta utilizzare per la prima pagina e quale utilizzare per le pagine successive.
Se premi Ctrl + P * per stampare e poi fai clic su Proprietà, puoi spesso (a seconda della stampante) rovistare e selezionare un vassoio della carta.
Pertanto, Word dispone di due posizioni in cui è possibile specificare i vassoi della carta e la stampante potrebbe avere la propria posizione per impostare un vassoio della carta da utilizzare. Quest’area di impostazione finale (tramite il pulsante Proprietà) è fuori dalla “portata” di VBA: la finestra di dialogo mostra le impostazioni nel driver della stampante, non in Word stesso.
A peggiorare le cose, non è disponibile una spiegazione chiara riguardo a quali impostazioni hanno la precedenza in un dato lavoro di stampa. Le impostazioni nella finestra di dialogo Formato di Stampa sovrascrivono l’impostazione del driver della stampante? L’impostazione del driver della stampante sostituisce l’impostazione della finestra di dialogo Opzioni di Word? In che modo l’impostazione della finestra di dialogo Opzioni di Word è correlata alle impostazioni di Imposta pagina? Hai l’idea; una moltitudine di impostazioni, combinate con i capricci delle diverse impostazioni del driver della stampante e le funzionalità della stampante possono creare confusione; ciò che può funzionare in una combinazione di condizioni potrebbe non funzionare in un’altra.
Detto questo, ci sono diversi approcci che puoi provare per controllare la selezione del vassoio della carta tramite una macro. È importante tenere presente che la macro può specificare le impostazioni nella finestra di dialogo Opzioni di Word, nonché nella finestra di dialogo Imposta pagina. La tua macro non può, tuttavia, specificare le impostazioni accessibili tramite il pulsante Proprietà della finestra di dialogo Stampa. (Ne parleremo tra poco.)
Se si desidera configurare le impostazioni del vassoio di impostazione della pagina, è possibile farlo utilizzando una macro simile alla seguente:
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
Questa macro, nonostante la sua lunghezza, imposta solo due impostazioni: l’impostazione Prima pagina e l’impostazione Altre pagine nella scheda Origine carta della finestra di dialogo Imposta pagina. Anche la macro non è completa, ma è solo un esempio di come la “impostazione” effettiva potrebbe essere eseguita nella tua macro. Questo codice particolare legge due impostazioni da un file INI (il nome del file è specificato nella stringa strIniFile), quindi effettua le impostazioni in base ai valori recuperati. Ovviamente, dovresti fornire il nome del file INI che desideri utilizzare e assicurarti che sia stato impostato per contenere le informazioni corrette nel formato appropriato. (L’impostazione dei file INI va oltre lo scopo di questo suggerimento, ma molte informazioni sono disponibili altrove sull’argomento.) Una volta che le impostazioni vengono lette dal file INI, vengono tradotte in impostazioni comprensibili da Word, quindi nel finale Con … Fine Con la struttura vengono apportate le modifiche alla finestra di dialogo.
Per i motivi menzionati in precedenza, l’approccio esemplificato in questa macro potrebbe non funzionare in tutte le situazioni. In caso contrario, potresti non essere in grado di controllare i vassoi della carta utilizzati dalla stampante, almeno da una macro. Ricordare che i vassoi della carta impostati tramite il pulsante Proprietà sono effettivamente sotto il controllo del driver della stampante e le impostazioni del driver della stampante non sono “visibili” in VBA. Una potenziale soluzione in questa situazione è semplicemente impostare diversi driver della stampante. Segui questi passaggi generali:
-
Determina il numero di vassoi della carta che desideri utilizzare sulla stampante.
-
Definisci una nuova stampante in Windows per ogni vassoio carta che desideri utilizzare.
Ad esempio, se si desidera utilizzare tre diversi vassoi carta, definire tre stampanti, ciascuna con un nome rappresentativo di un vassoio carta.
-
Fare clic con il pulsante destro del mouse su una definizione di stampante e modificare le proprietà della stampante in modo che stampi nel vassoio della carta desiderato.
-
Ripetere il passaggio 3 per ciascuna delle altre definizioni di stampante, assicurandosi di specificare diversi vassoi della carta per ciascuna.
A questo punto sono configurate più definizioni di stampante e ognuna stamperà su un vassoio carta diverso sulla stessa stampante. È ora possibile specificare la stampante desiderata, in una macro, in modo che la stampa vada al vassoio carta desiderato. L’unico inconveniente di questa soluzione, ovviamente, è che richiede un bel po ‘di lavoro di configurazione. Se lavori in un ufficio con 50 utenti, questo significa che dovrai assicurarti che tutti e 50 abbiano ciascuna stampante definita come descritto sopra.
Ricordare che il vassoio della carta che deve essere utilizzato da Word può essere specificato dall’utente attraverso la selezione di una o più impostazioni in varie finestre di dialogo, come descritto in dettaglio nella prima di questo suggerimento. Per questo motivo, alcune persone hanno avuto successo utilizzando l’istruzione SendKeys per emulare la pressione dei tasti che un utente utilizzerebbe per specificare un vassoio della carta. (È possibile trovare informazioni su SendKeys nella guida in linea di VBA disponibile con Word.)
Ciò che SendKeys fa in realtà è riempire il buffer della tastiera con una serie di pressioni di tasti, proprio come verrebbero digitate dall’utente. Tuttavia, esiste un potenziale problema con SendKeys. Può essere inaffidabile perché non c’è modo di assicurare che i tasti premuti stiano effettivamente andando dove vuoi. Su un sistema operativo multi-thread (come Windows), qualche altro processo potrebbe intervenire e far fallire i comandi.
La linea di fondo è che, sfortunatamente, non esiste una “taglia unica”
soluzione per selezionare un vassoio carta utilizzando una macro. Una soluzione che funziona per una persona potrebbe non funzionare per un’altra. Per questo motivo, dovrai sperimentare per vedere quale soluzione funzionerà meglio per te, ma non aspettarti che funzioni per tutti gli altri.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (9320) si applica a Microsoft Word 2007, 2010, 2013 e 2016. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Word qui: