Especificación de una bandeja de papel en una macro (Microsoft Word)
Si utiliza macros para imprimir documentos, ya sabe que la macro puede especificar la impresora real a la que se debe enviar la salida. ¿Qué sucede si también desea especificar una bandeja de papel específica para usar en esa impresora? Desafortunadamente, esto se vuelve un poco complicado en Word. Un breve recorrido y una explicación ayudarán a aclarar por qué este es el caso.
La bandeja de papel que utiliza Word depende de varios factores, algunos de los cuales no están bajo el control de Word. Por ejemplo, considere lo siguiente, algunos de los cuales dependen de la versión de Word que esté utilizando.
-
Si muestra el cuadro de diálogo Opciones de Word y hace clic en Avanzado, en el grupo Imprimir puede especificar una Bandeja predeterminada.
-
Si muestra la pestaña Diseño de página de la cinta y luego hace clic en el icono en la parte inferior derecha del grupo Configurar página, verá el cuadro de diálogo Configurar página. En la ficha Origen del papel, puede especificar qué bandeja de papel usar para la primera página y cuál usar para las páginas siguientes.
Si presiona Ctrl + P * para imprimir y luego hace clic en Propiedades, a menudo (dependiendo de su impresora) puede hurgar y seleccionar una bandeja de papel.
Por lo tanto, Word tiene dos lugares donde puede especificar bandejas de papel, y su impresora puede tener su propio lugar para configurar una bandeja de papel para usar. Esta área de configuración final (a través del botón Propiedades) está fuera del «alcance» de VBA; el cuadro de diálogo muestra la configuración en el controlador de la impresora, no en Word.
Para empeorar las cosas, no hay una explicación clara disponible sobre qué configuraciones tienen prioridad en un trabajo de impresión determinado. ¿La configuración del cuadro de diálogo Configurar página anula la configuración del controlador de impresora? ¿La configuración del controlador de la impresora anula la configuración del cuadro de diálogo Opciones de Word? ¿Cómo se relaciona la configuración del cuadro de diálogo Opciones de Word con la configuración de Configurar página? Entiendes la idea; una multitud de configuraciones, combinadas con los caprichos de diferentes configuraciones del controlador de impresora y capacidades de la impresora pueden generar confusión; lo que puede funcionar en una combinación de condiciones puede no funcionar en otra.
Dicho esto, hay varios enfoques que puede probar para controlar la selección de la bandeja de papel a través de una macro. Es importante tener en cuenta que su macro puede especificar configuraciones en el cuadro de diálogo Opciones de Word, así como en el cuadro de diálogo Configurar página. Sin embargo, su macro no puede especificar la configuración accesible a través del botón Propiedades del cuadro de diálogo Imprimir. (Más sobre esto en un momento.)
Si desea establecer la configuración de la bandeja de Configuración de página, puede hacerlo usando una macro similar a la siguiente:
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
Esta macro, a pesar de su longitud, solo establece dos configuraciones: la configuración de Primera página y la configuración de Otras páginas en la pestaña Origen del papel del cuadro de diálogo Configurar página. La macro tampoco está completa, sino solo un ejemplo de cómo se podría realizar la «configuración» real en su propia macro. Este código en particular lee dos configuraciones de un archivo INI (el nombre del archivo se especifica en la cadena strIniFile) y luego realiza las configuraciones en función de los valores recuperados. Obviamente, necesitaría proporcionar el nombre del archivo INI que desea usar, así como asegurarse de que esté configurado para contener la información adecuada en el formato adecuado. (La configuración de archivos INI está más allá del alcance de esta sugerencia, pero hay mucha información disponible sobre el tema en otros lugares). Una vez que se leen las configuraciones del archivo INI, se traducen a configuraciones que Word puede entender, y luego en el Con … Fin Con estructura se realizan los cambios del cuadro de diálogo.
Por las razones mencionadas anteriormente, el enfoque ejemplificado en esta macro podría no funcionar en todas las situaciones. Si no es así, es posible que no pueda controlar las bandejas de papel que utiliza su impresora, al menos desde una macro. Recuerde que las bandejas de papel configuradas a través del botón Propiedades están en realidad bajo el control de su controlador de impresora, y la configuración del controlador de impresora no es «visible» para VBA. Una posible solución en esta situación es simplemente configurar diferentes controladores de impresora. Siga estos pasos generales:
-
Determine cuántas bandejas de papel desea utilizar en la impresora.
-
Defina una nueva impresora en Windows para cada bandeja de papel que desee utilizar.
Por ejemplo, si desea utilizar tres bandejas de papel diferentes, debe definir tres impresoras, cada una con un nombre representativo de una bandeja de papel.
-
Haga clic con el botón derecho en una definición de impresora y cambie las propiedades de la impresora para que imprima en la bandeja de papel deseada.
-
Repita el paso 3 para cada una de las otras definiciones de impresora, asegurándose de especificar diferentes bandejas de papel para cada una.
En este punto, tiene varias definiciones de impresora configuradas y cada una imprimirá en una bandeja de papel diferente en la misma impresora. Ahora puede especificar la impresora deseada, en una macro, para que la impresión vaya a la bandeja de papel deseada. El único inconveniente de esta solución, por supuesto, es que requiere bastante trabajo de configuración. Si trabaja en una oficina con 50 usuarios, esto significa que deberá asegurarse de que las 50 tengan cada impresora definida como se describe anteriormente.
Recuerde que el usuario puede especificar la bandeja de papel que utilizará Word mediante la selección de una o más configuraciones en varios cuadros de diálogo, como se detalla al principio de este consejo. Debido a esto, algunas personas han tenido éxito al usar la instrucción SendKeys para emular las pulsaciones de teclas que usaría un usuario para especificar una bandeja de papel. (Puede encontrar información sobre SendKeys en la ayuda en línea de VBA disponible con Word).
Lo que SendKeys realmente hace es rellenar el búfer del teclado con una serie de pulsaciones de teclas, tal como las escribiría el usuario. Sin embargo, existe un problema potencial con SendKeys. Puede ser poco confiable porque no hay forma de asegurarse de que las pulsaciones de teclas vayan realmente a donde desea. En un sistema operativo de subprocesos múltiples (como Windows), algún otro proceso podría intervenir y descarrilar los comandos.
La conclusión es que, desafortunadamente, no existe una «talla única»
solución para seleccionar una bandeja de papel usando una macro. Una solución que funciona para una persona puede no funcionar para otra. Por este motivo, deberá experimentar para ver qué solución funcionará mejor para usted, pero no espere que funcione para todos los demás.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (9320) se aplica a Microsoft Word 2007, 2010, 2013 y 2016. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Word aquí:
link: / word-Specifying_a_Paper_Tray_in_a_Macro [Especificación de una bandeja de papel en una macro]
.