En estos tiempos que corren donde tiene que ser verde, es curioso que Excel no ofrezca la posibilidad de imprimir páginas pares o impares como existe en Word. Esta funcionalidad nos permite ahorrar papel imprimiendo en ambas caras de las hojas.
Podemos superar esta carencia con esta macro que Ron de Bruin publica en su página, quien a su vez cita a Gord Dibben
Sub Print_Odd_Even()
Dim Totalpages As Long
Dim StartPage As Long
Dim Page As Integer
On Error GoTo errHandler
StartPage = 1 '1 = Odd and 2 = Even
StartPage = InputBox("Ingrese 1 para impares, 2 para pares")
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
For Page = StartPage To Totalpages Step 2
ActiveSheet.PrintOut from:=Page, To:=Page, _
Copies:=1, Collate:=True
Next
Exit Sub
errHandler:
Exit Sub
End Sub
El mejor lugar para guardar esta macro es el cuaderno de macros Personal de manera que la macro siempre esté disponible. También podemos crear un icono o un atajo de teclado para lanzar la macro con facilidad.
El corazón de esta macro es la macrofunción XLM GET.DOCUMENT(50), así que agregaremos algunas palabras sobre el tema.
Como ya he publicado en el pasado las funciones macro del lenguaje XLM, que fue usado hasta la versión 5 de Excel, siguen vigentes por motivos de compatibilidad. Estas funciones nos permiten hacer tareas como por ejemplo determinar cuántas páginas a imprimir hay en un cuaderno de Excel.
Pues es interesante saberlo y muy funcional; la verdad que no imprimo mucho en Excel, pero las veces que imprimía por ambas caras (casi siempre para información particular), tenía que imprimir de hoja en hoja y luego darle la vuelta.
ResponderBorrarSaludos
Estaba buscando algo como ésto!! muchas gracias ya lo probé me sirvió de mucho!!
ResponderBorrartenía que imprimir unas 800 hojas en excel y no sabía como imprimir a dos caras... la verdad que me ahorré mucho con esta macro, muy buena la verdad, se agradece.
ResponderBorrarMuy buena, muchisimas gracias
ResponderBorraralguien se animaria a explicarme más graficamente como se hace esto porque no me saleeee :(
ResponderBorrarTienes que abrir el editor de VBa (Alt+F11). Fijate si existe el Personal.xls. No existe tienes que crearlo (fijate en esta nota o en esta otra si usas Excel 2007).
ResponderBorrarEn un módulo copias el código. Puedes definir un atajo de teclado o activar la macro desde el menú/botón de macros o con el atajo Alt+F8.
Mue Bueno, aunque me costo un poco. Gracias!
ResponderBorrarBuenisiisisissisimoooooo!! Gracias!!!! Gracias!!! Kayita
ResponderBorrarUy si funciona para los nones pero no así para los pares... alguien tiene la correcta?? Gracias!! K
ResponderBorrarEstimada, el código publicado imprime la páginas impares. Esto está definido en esta parte del código
ResponderBorrarStartPage = 1
Para que imprima la impares hay que cambiar el valor de la varaiable a 2
StartPage = 2
Hola, en realidad lo que me sucedió fue lo sig. corrió perfecto la primera vez, seleccioné 1 e imprimió todas las páginas nones del documento, después seleccioné 2 e imprimió sólo la pág. 2, pensé que sólo funcionaba para nones pero intenté de nuevo con 1 y sólo me imprimió la pág.1, es decir, sólo corrió bien la primera vez, estoy utilizando Excel 2010, me hará falta algún comando por la versión? o hay que agregar algo a la programación?? Gracias! K
ResponderBorrarAcabo de probar el código en Excel 2010 (el original fue desarrollado en Excel 2003) y, efectivamente, no funciona. El problema reside en la sentencia
ResponderBorrarTotalpages =Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
que parece ser que Excel 2010 no reconoce.
La solución es reemplazarla con
Totalpages = ActiveSheet.HPageBreaks.Count
Hice algunas pruebas y parece funcionar bien. Informame si surge algún nuevo problema.
Una correción a mi comentario anterior:
ResponderBorrarTotalpages = ActiveSheet.HPageBreaks.Count * ActiveSheet.VPageBreaks.Count
calcula el número correcto de páginas a imprimir, también si hay saltos verticales.
Q WENO ME AYUDO MUCHO...FELICIDADES
ResponderBorraramigo pasa que estoy imprimiendo a un pdf y al correr tu macro funciona perfectamente, pero me fabrica un archivo por cada hoja... alguna idea para corregir eso?
ResponderBorrarNo sabría decirte. Te sugiero que lo guardes como PDF y lo imprimas de ambos lados de la hoja usando las propiedades de la impresora.
ResponderBorrarhola
ResponderBorrarintento crear un botón que me permita indicar el numero de copias que quiero imprimir de un archivo para después crear una macro que me lo haga , y no consigo nada. alguien sabe como puedo hacerlo?
María,
ResponderBorrar¿una macro que haga qué? ¿Podrías explicar un poc más lo que estás tratando de hacer?
hola Jorge
ResponderBorrarsiento la tardanza en responder. Haber si sé explicarme. He podido hacer una macro que me imprime una hoja cuando hago click en un botón de acción. ahora, quiero saber si se puede hacer una macro que me imprima 2 o 3 hojas siempre.
gracias por todo
un saludo
maria
SI se trata de imprimir siempre 3 copias, todo lo que hay que hacer es cambiar en el código de "copies:=1" a "copies:=3".
ResponderBorrarTambién se puede agregar una variable al código para que el usuario pueda pasar el número de copias a imprimir.
hola Jorge
ResponderBorrarYo grabe la macro, no edite código. Crees que modificando el codigo de la macro de arriba me puede valer?
gracias
un saludo
María, por supuesto. Tal como te puse en mi reuesta a tu comentario anterior.
ResponderBorrarBuenas Tardes Amigos.
ResponderBorrarAlguien me puede colaborar para poder modificar el código para que la impresión me aplique a todas las hojas del libro, ya que solo me aplica a la hoja en que me encuentre y necesito imprimir todas las hojas del libro y mi idea es poder imprimir en las dos caras de manera mas fácil.
Muchas Gracias
Tendrías que crear un loop que pase por todas las hojas del libro.
ResponderBorrarTendrías que declarar un variable para las hojas, por ejemplo:
Dim wsh as Worksheet
luego agregar el loop en esta parte
for each wsh in activeworkbook.worksheets
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
For Page = StartPage To Totalpages Step 2
wsh.PrintOut from:=Page, To:=Page, _
Copies:=1, Collate:=True
Next
next wsh
Si usas Excel 2010 fijate en mi comentario del 19 de julio del 2012
Muchas Gracias por la informacion
ResponderBorrarbuen dia...
ResponderBorrartengo un inconveniente con le codigo... si me imprime las hojas impares o pares segun seleccione... pero lo que requiero es que me imprima las hojas pares en una sola hoja, es decir, la pagina 2 y 4 van en una sola hoja, como hago para que mi impresora lo pueda hacer automaticamente.
Nota: mi impresora si tiene la opcion de imprimir por ambos lados
No se me ocurre ninguna forma de hacerlo.
ResponderBorrarMuchas Gracias ...Me funciono bien al imprimir pares pero con la linea de codigo de la primera correccion.
ResponderBorrarTotalpages = ActiveSheet.HPageBreaks.Count
Genssel