Imprimir página | Cerrar ventana

Numeración de hojas a imprimir

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84924
Fecha de impresión: 26/Marzo/2026 a las 18:58


Tema: Numeración de hojas a imprimir
Publicado por: Gladiador
Asunto: Numeración de hojas a imprimir
Fecha de publicación: 02/Enero/2020 a las 18:58
Hola a todos y FELIZ AÑO

Nuevamente, tengo una consulta para todos

Debo imprimir una hoja. El total de paginas a imprimir es de 19 (en este caso). Tengo unas filas de titulo (de la 1 a la 7) para que se repitan en cada página que se imprime; dentro de esas filas de título deseo insertar el número de la página y de cuantas página consta la impresión. Ej Pág. 1 de 19, Pág 2 de 19 etc.

Para ello he creado la siguiente macro, que me funciona bien, excepto que en vez de tener una impresión de 19 páginas, tengo 19 impresiones de 1 página cada una. 

La instrucción es esta:
    Dim xTotalPages As Integer

 xTotalPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
    ActiveSheet.Cells(4, "X") = xTotalPages
 
For i = 1 To xTotalPages Step 1
    ActiveSheet.Cells(4, "V") = i

    ActiveWindow.SelectedSheets.PrintOut From:=i, to:=i, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
Next i

Quisiera que fuese una sola impresión de 19 páginas. Adicionalmente, si deseo imprimirlo como PDF, debo crear 19 archivos

Cualquier ayuda es muy bienvenida
Gracias

Gladiador




Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 02/Enero/2020 a las 20:31

Hola de nuevo. Feliz 2020.


- En principio no veo la necesidad de una macro para hacer lo que pides.


«... Tengo unas filas de titulo (de la 1 a la 7) para que se repitan en cada página...»

- Excel integra la herramienta para hacer eso: Diseño de página > Configurar página > Imprimir títulos > ...


«... dentro de esas filas de título deseo insertar el número de la página y de cuantas página consta la impresión. Ej. Pág. 1 de 19, Pág. 2 de 19 etc. ...»

- Excel también incorpora esa herramienta, pero no para escribir en las celdas sino en el encabezado o pie de página.


«... en vez de tener una impresión de 19 páginas, tengo 19 impresiones de 1 página...»

- ¿Que debemos entender diferente entre ambos casos?

- ¿Que rango te imprime en hoja1? ¿Que rango te imprime en hoja2?

- ¿Que rango esperas que imprima en hoja1 ? ¿Que rango esperas que imprima en hoja2?

- ¿Incluye (o no incluye) las 7 filas (1:7) en cada hoja impresa?


- Si existe algún detalle (importante) que no has contado...





-------------
Saludos desde Tenerife.


Publicado por: Gladiador
Fecha de publicación: 02/Enero/2020 a las 21:36
Hola AnSanVal, gracias por tu tiempo.

El área de impresión es A1:X749
Debo repetir en cada página impresa la filas 1 a 7 que es donde están los detalles del informe.
En la celda "V4" debo colocar el Número de la Pagina. En la celda "U4" está escrito "Página", en la celda W4 está escrito "de" y en la celda "X4" debo colocar el total de páginas a imprimir. Es parte del formato que tiene mi cliente en sus informes profesionales.

«Excel también incorpora esa herramienta, pero no para escribir en las celdas sino en el encabezado o pie de página.»
Ya intenté hacerlo con el encabezado, pero : Primero, no sería un estándar para todos los informes y Segundo, Lograr que el Número que genera el encabezado, coincida con la celda "V4" es tedioso, laborioso y poco preciso.

«- ¿Que rango te imprime en hoja1? ¿Que rango te imprime en hoja2?»

La Página 01 imprime desde la fila 8 a la fila 51 (A8:X51)
La Pagina 02 imprime desde la fila 52 a la fila 76 (A52:X76)
La Pagina 03 imprime desde la fila 77 a la fila 117
La Página 04 imprime desde la fila 118 a la fila 149
ETC

«- ¿Incluye (o no incluye) las 7 filas (1:7) en cada hoja impresa?»

Claro que se incluyen las filas 1 a 7, por eso mencioné que "Tengo unas filas de titulo (de la 1 a la 7) "
y, en las celdas V4 y X4 se incluye el número de página y total de páginas, respectivamente.
Y esto lo realicé mediante la herramienta Diseño de página > Configurar página > Imprimir títulos > ... que mencionas.

«... en vez de tener una impresión de 19 páginas, tengo 19 impresiones de 1 página..

- ¿Que debemos entender diferente entre ambos casos?»

Que la impresora recibe 19 veces la información de impresión (Cuando se realiza por impresora). La macro que he construido funciona pero, se corre el riesgo que, en la cola de impresión, se mezcle impresiones de otros usuarios.


Adicionalmente, como ya lo mencioné, si deseo imprimirlo como un archivo PDF, entonces, por cada página a imprimir debo generar un archivo.


Gracias por tu ayuda

Gladiador


Publicado por: AnSanVal
Fecha de publicación: 03/Enero/2020 a las 16:10

Dado que el diseño lo tenéis decidido/establecido  y el «modus operandi» también, olvidemos lo que dije en mi mensaje anterior y partamos de cero.


1.- El código VBA es un bucle que manda a imprimir una sola hoja por cada valor de  i , por tanto es lógico que imprima hojas individuales. Si con el PDF utilizas el mismo sistema, la explicación es la misma.


2.- Se me ocurre que podrías hacer una copia temporal de los datos en otro rango (p.e. CA:CX), con tantos cabeceros (A1:X7) como hojas a imprimir, seguidos de sus datos correspondientes.

- De modo que:

1ª hoja:

   · [CA1:CX51]     =   [A1:X51] 

   · [CU4]     =ENTERO(FILA()/50+1)     o directamente   

2ª hoja:

   · [CA52:CX58]     =   [CA1:CX7] 

   · [CU55]     =ENTERO(FILA()/50+1)     o directamente  

   · [CA59:CX102]     =   [A52:X95] 

3ª hoja:

   · [CA103:CX109]     =   [CA1:CX7] 

   · [CU106]     =ENTERO(FILA()/50+1)     o directamente el

   · [CA110:CX153]     =   [A96:X139] 

... etc.


3.- Establece Area de impresión: CA1:CX969 e imprime con ActiveSheet.PrintOut


4.- Crea el PDF.


5.- Borra el rango temporal (CA1:CX969).





-------------
Saludos desde Tenerife.



Imprimir página | Cerrar ventana