** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Numeración de hojas a imprimir
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoNumeración de hojas a imprimir

 Responder Responder
Autor
Mensaje
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Enlace directo a este mensaje Tema: Numeración de hojas a imprimir
    Enviado: 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

Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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...





Editado por AnSanVal - 02/Enero/2020 a las 20:34
Saludos desde Tenerife.
Arriba
Gladiador Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Junio/2006
Localización: Venezuela
Estado: Sin conexión
Puntos: 220
Enlace directo a este mensaje Enviado: 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
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5970
Enlace directo a este mensaje Enviado: 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).





Editado por AnSanVal - 03/Enero/2020 a las 16:11
Saludos desde Tenerife.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable