Você está na página 1de 5

Macro Establecer Áreas

de Impresión
ExcelTrucos / abril 18, 2013
Esta macro activa las tres primeras hojas y fija el área de impresión en el rango seleccionado, de esta forma
para un conjunto de hojas no tendríamos que estar seleccionando cada una de ellas para fijarlas, si en todas es
es igual podríamos usarla para imprimir el libro de Excel de una forma rápida.

Sub Area_Impresion()
‘ Seleccionar Áreas
Dim i As Integer
For i = 1 To 3
Sheets(i).Activate
Range(“B5:D10,B13:D20”).Select
ActiveSheet.PageSetup.PrintArea = “$B$5:$D$10,$B$13:$D$20”
Next i
‘ Imprimir las Áreas
ActiveWorkbook.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

1 RESPUESTA
RESPUESTA DE ELSA MATILDE

Elsa Matilde, REGALA(TE) manuales Excel desde aplicaexcel.galeon.com

La instrucción para establecer un área de impresión es:


ActiveSheet.PageSetup.PrintArea = $A$1:$D$20
Ahora, si la macro tiene que distinguir el área, lo que va a hacer es lo mismo que
hacemos cuando presionamos las teclas Ctrl+Fin (buscar la última celda trabajada).
Sub AreaImpresion()
'
' Macro grabada el 28/06/2003 por EMM.
Dim primera, ultima As Variant
Range("A1").Select
If ActiveCell.Value = ?? Then
Selection.End(xlToRight).Select
End If
primera = ActiveCell.Address
ActiveCell.SpecialCells(xlLastCell).Select
ultima = ActiveCell.Address
ActiveSheet.PageSetup.PrintArea = (primera & ":" & ultima)
End Sub
Para la primera tomé A1, pero si está vacía tomará la primer celda con datos a la
derecha.
Con Alt+F11 llamás al Editor de VB, Insertas módulo, doble clic sobre él y copias la
macro. De esta forma funciona para cualquier hoja activa. De ser necesario tendrás
que incluir la ubicación de la hoja a seleccionar.
Espero que sea como vos la necesitas, cualquier inconveniente me volvés a consultar.
el 27 jun. 03

Elsa
Te agradezco la gentileza que has tenido al responderme.
¿Hice lo que me dijiste pero la macro no funciono se paro en el signo?.
Aprovecho la oportunidad de precisarte mi pregunta, en el sentido de que el área de
impresión que deseo definir es de la A1 hasta la J... esa es la parte variable y
depende de los datos que contenga la planilla después de ser actualizada.
Cordialmente
mauromol
el 28 jun. 03

Elsa, hice lo que me dijiste y funciono, aunque selecciono una serie de lineas que
estaban formateadas pero no tenían datos, hice lo sig.
cpr = Cells(1, 11).Value
Dim primera, ultima As Variant
Range("A1").Select
primera = Cells(1, 1).Address
ActiveCell.SpecialCells(xlLastCell).Select
ultima = Cells(cpr + 37, 10).Address
ActiveSheet.PageSetup.PrintArea = (primera & ":" & ultima)
Range("A1").Select
End Sub
No se si utilizo la notacion correcta pero funciono,dime es correcto lo que hice.la
expresion cpr = Cells(1, 11).Value
precisa el numero de lineas que tienen datos.
Afectuosamente
mauromol
el 29 jun. 03

Lo siento, pero cuando copio mis respuestas confeccionadas en Word algunos signos
luego se distorsionan. Lo que va en lugar de las preguntas son 2 comillas, es decir le
pregunto si es igual a vacío.
De todos modos, con la novedad que acabas de pasarme esas 3 líneas (desde ese If
hasta su End if) no van ya que siempre empieza en A1, y yo lo que hacía con esas
líneas era pasar a la primer celda con datos en caso de que no sea A1.
Lor lo tanto bórralas y probá de nuevo.
Suerte y espero tus comentarios
Elsa
el 29 jun. 03

En primer lugar si un usuario tiene una macro que le da resultados no hay más nada
que decir. Pero probé la que me enviaste y no me da los resultados esperados.
La diferencia entre tu macro y la mía es que la tuya me seleccionó hasta la celda J55
cuando yo tengo datos solo hasta la J22, es decir que para rangos menores la tuya se
queda siempre en J (líneas usadas + 37), en cambio mi macro toma solo el área con
información. Por supuesto que si hay celdas con bordes lo considera información.
Con respecto a la instrucción cpr=Cell(1,11). value , la variable guarda el valor que
hay en esa celda (por ejemplo un texto, una fecha o un importe) Creo que ahí guardas
el total de líneas utilizadas, eso está bien siempre y cuando calcules bien, solo no sé
entonces porqué le sumas 37.
Si tenés la instrucción Range(? ¿A1?). Select la variable primera puede quedar como
estaba:
primera=ActiveCell.Address en lugar de decirle nuevamente que sea Cells(1,1)
Las 3 líneas que quitamos eran por si la tabla comenzaba en otra columna que no sea
la 1.
Si definís la celda última, no será necesaria la instrucción:
ActiveCell. SpecialCells(xlLastCell).Select ya que nunca tomás en cuenta esta
dirección.
Por lo tanto Mauromol, bastante bien lo tuyo. Mucha suerte y espero tus comentarios
(no olvides que tenés que finalizar marcando una puntuación y algún comentario (si te
place)
Tengo la versión 2007, el planteamiento es el siguiente:

es un libro con una sola hoja de calculo, en la cual está definida un área de impresión, la parte
superior (las primeras filas) se repiten en la impresión para las filas posteriores bajo ese
encabezado, en la columna "M" a partir de la celda "M11" hay una formula con un =SI
condicional, la cuestión es que si no hay cantidad indicada en la columna "H" no se muestra
nada en estas celdas de la "M", pero al momento de imprimirlas, me manda todas las hojas
hasta donde esta la formula que es la celda "M2516", lo que necesito es que me imprima las
paginas resultantes (que a parte se están auto-numerando conforme se llenan las paginas)
mientras lleno fila por fila, es decir por los requerimientos de el formato que se llena puedo
llenar de una fila, hasta las 2500, y solo quiero que se impriman las resultantes con su numero
de pagina, que ya esta establecido como y donde debe llenarse, o se pudiera cambiar si es
necesario a alguna celda quizá...

y aparte de esto quisiera que el rango de celdas "N11:Z15" que ya se encuentra considerada
en el área de impresión, se consecutivo en la ultima pagina resultante, es decir
inmediatamente después de la ultima fila llena, para que lo puedan checar les entrego el
archivo y espero lo puedan revisar y hacer comentarios, gracias:smug:

otros detalles que quizá convenga explicar:

el rango de celdas "N11:Z15", contiene resultados de formulas que involucran la la


columna"M", y la retención del impuesto se hace marcando "1" o "0" en la celda "H1", y se
hace una copia del archivo en una carpeta "X" con una macro que responde al botón "No.",
situado sobre la celda "F1" y en las primeras filas hay una formula de =BUSCAR V, referida a
un archivo aparte.

mil gracias...

es todo mil gracias..

Você também pode gostar