jueves, noviembre 22, 2007

Área de impresión dinámica en Excel, con macros.

La consulta que dio origen a la nota anterior sobre cómo determinar un área de impresión en forma dinámica, pedía hacerlo con macros.

Así que para saldar mi deuda con el lector mostramos aqu[i una de las formas de hacerlo con Vba.

Volviendo a nuestro ejemplo anterior,




podemos usar las celdas G2 y G3 con esta macro:

ActiveSheet.PageSetup.PrintArea = [G2] & ":" & [G3]

Cambiando los valores de las celdas G2 y G3, al correr la macro cambiará la selección del área de impresión.

Technorati Tags:

6 comentarios:

  1. y ¿qué sucede si lo que quiero es definir mi área con un rango cualquiera de celdas que acabo de seleccionar con click y no se cual és? es decir, no se la columna ni la fila

    ResponderBorrar
  2. EN ese caso no necesitás una macro; sencillamente usás "Diseño de página-Configurar página-Área de impresión"
    O usás una macro con este código

    ActiveSheet.PageSetup.PrintArea = Selection.Address

    ResponderBorrar
  3. Y si el area de impresión fuese en otra página, ¿puedo colocar el nombre de la página en esas mismas celdas?

    ResponderBorrar
  4. Suponiendo que en la celda G1 ponemos el nombre de la hoja, el código sería:

    Sheets(CStr([G1])).PageSetup.printArea = [G2] & ":" & [G3]

    Este código debe ser activado desde la hoja que contiene las celdas G1, G2 y G3

    ResponderBorrar
  5. que tal, estoy haciendo una macro donde al llenar un formato todas las celdas que lo conforman se desplacen hacia abajo. Mi formato va de A1 a AD70, al insertar el siguiente formato se desplaza esto hacia abajo, hasta ahí bien, mi problema es que tengo establecida el área de impresión y los saltos de página para que mi formato ocupe una página, a la hora de insertar logré que también se inserte una nueva área de impresión, pero a la hora de insertar un tercer formato ya este me queda fuera =( ¿Cómo puedo hacer para que la macro añada las 70 líneas a una nueva área de impresión? es decir 1 formato =A70:AD70, 2 formatos = A140:AD140, 3 formatos = A210:AD210 y así consecutivamente

    pego aquí mi código

    Sub Macro19()
    '
    ' Macro19 Macro
    '

    '
    ActiveWindow.SmallScroll Down:=-3
    Range("A71:AD71").Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
    Range("S70").Select
    ActiveWindow.SmallScroll Down:=-18
    Range("AD70").Select
    ActiveWindow.SmallScroll Down:=-78
    Range("A1:AD70").Select
    Range("AD70").Activate
    Selection.Copy
    Selection.Insert Shift:=xlDown
    ActiveWindow.SmallScroll Down:=3
    Range("P71").Select
    Application.CutCopyMode = False
    ActiveSheet.PageSetup.PrintArea = "$A$1:$AD70"
    ActiveWindow.SmallScroll Down:=-15
    Range("AB58:AD58").Select
    ActiveWindow.SmallScroll Down:=-51
    Range("C9:AD58,E4:J4,E3:J3,E2:O2,U2:V2,Z2:AA2").Select
    Range("Z2").Activate
    Selection.ClearContents
    Range("E2:O2").Select

    ResponderBorrar
  6. Alexandra, por favor lee lo que pongo en el enlace Ayuda (en la parte superior del blog).

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.