Excel - Imprimir n páginas de un formulario insertando el número de página en una celda

 
Vista:
sin imagen de perfil
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Lluís (17 intervenciones) el 30/03/2022 19:08:37
Hola

Aunque he buscado entre diferentes hilos, no he encontrado nada que se adapte a mis necesidades. Planteo mi problema:

Quiero imprimir un formulario "n" veces para montar una libreta. "n" es un valor indicado en una celda y cada nueva página que se imprima debe paginarse de 1 hasta "n". El número de página se imprimirá en una celda del formulario.

Según el ejemplo adjunto (SE099.xlsm):

- El formulario a imprimir está en la hoja "Llibreta".
- El número de páginas a imprimir (n) está en la celda C8 de la hoja "Dades"
- El número de página de cada formulario que se imprima ha de ubicarse en la celda G3 de la hoja "Llibreta".

Como en otras ocasiones, confío en vuestros excelentes conocimientos de Excel y os agradezco enromemente vuestro esfuerzo por pequeño que sea.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Antoni Masana (2477 intervenciones) el 30/03/2022 21:56:55
La macro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Sub PrintLlibreta()
    Dim a As Integer, Inici As Integer, _
                      Final As Integer
 
    ' ---&--- acelerar i optimizar las macros
 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    ' ---&--- Captura de dades per imprimir
 
    Sheets("Dades").Select
    Inici = Range("C6")
    Final = Range("C8")
 
    ' ---&--- Portada
 
    Sheets("Portada").Select
    ActiveWindow.SelectedSheets.PrintOut _
                                Copies:=1, _
                                Collate:=True, _
                                IgnorePrintAreas:=False
    ' ---&--- Llibreta
 
    Sheets("Llibreta").Select
    For a = Inici To Final
        Range("G3") = a
        ActiveWindow.SelectedSheets.PrintOut _
                                    Copies:=1, _
                                    Collate:=True, _
                                    IgnorePrintAreas:=False
    Next
 
    ' ---&--- Restaurant l'entorn
 
    Sheets("Dades").Select
    Range("F10").Select
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Lluís (17 intervenciones) el 01/04/2022 06:33:12
Hola Antoni

Esto es velocidad y eficacia. Muchas gracias por esta macro, Funciona muy bien.

Quisiera hacer dos preguntas más al respecto:

- Si deseo imprimir la libreta en pdf, cada hoja se debe guardar como un archivo independiente. ¿Se podría hacer que se imprima en un único archivo?
- Si añado un segundo formulario al lado del primero, de manera que represente el reverso de esa página, ¿cómo se resolvería la macro?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Antoni Masana (2477 intervenciones) el 01/04/2022 19:41:18
Tal cual esta la macro y con un pequeño cambio se puede crear PDF, tantos como hojas.
Ahora bien la gracia estaría en crear un solo PDF. Para eso hay que hacer unos pequeños cambios, hace poco, creo que esta semana, he contestado sobre este tema. Es cuestión de adaptar esa macro a tu caso.
Si quieres añadir un reverso a la hoja Llibreta puedes hacerlo de 2 formas en la misma hoja, al lado o debajo o en hoja nueva. Hacerlo de una o de otra forma afecta a la macro.
Otro problema es la hoja Portada porque también ha de tener reverso, aunque sea una hoja en blanco, y la razón está en que si quieres imprimir a doble cara tendrás un descuadre de hojas.

Y ahora ¿como se hace para crear un solo PDF? pues tener las 50 hojas preparadas e imprimirlas todas a la vez.
Creas una tabla
Copias la hoja portada como Pagina_00 y la añades el nombre de la hoja a la tabla.
Rellenas la hoja Llibreta (pones el numero de pagina) copias la Pagina_01 y la añades el nombre de la hoja a la tabla.
Rellenas la hoja Llibreta (pones el numero de pagina) copias la Pagina_02 y la añades el nombre de la hoja a la tabla.
y Así hasta el total de páginas a imprimir
Al final guardas como PDF las hojas que hay en la tabla.
Borras las hojas que hay en la tabla.

La macro per crea un solo PDF esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Option Explicit
Option Base 1
 
Sub PrintLlibreta()
    Dim a As Integer, Inici As Integer, _
                      Final As Integer
 
    Dim Hojas() As String, Punt As Integer
 
    ' ---&--- acelerar i optimizar las macros
 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    ' ---&--- Captura de dades per imprimir
 
    Sheets("Dades").Select
    Inici = Range("C6")
    Final = Range("C8")
    Punt = 0
 
    ' ---&--- Portada
 
    Sheets("Portada").Select
    ActiveWindow.SelectedSheets.PrintOut _
                                Copies:=1, _
                                Collate:=True, _
                                IgnorePrintAreas:=False
    Punt = Punt + 1
    ReDim Preserve Hojas(Punt)
    Hojas(Punt) = "Pagina_" & Right(Str(1000 + Punt), 3)
 
    Sheets("Portada").Select
    Sheets("Portada").Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = Hojas(Punt)
    Sheets("Portada").Select
 
    ' ---&--- Llibreta
 
    Sheets("Llibreta").Select
    For a = Inici To Final
        Range("G3") = a
 
        Punt = Punt + 1
        ReDim Preserve Hojas(Punt)
        Hojas(Punt) = "Pagina_" & Right(Str(1000 + Punt), 3)
 
        Sheets("Llibreta").Select
        Sheets("Llibreta").Copy After:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = Hojas(Punt)
        Sheets("Llibreta").Select
    Next
 
    ' ---&--- Crea el PDF
 
    Sheets(Hojas).Select
 
    ActiveSheet.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:="C:\tmp\Nombre_del_Fichero.pdf", _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False      ' Esta ultima si se pone TRUE abre el PDF
 
    ' ---&--- Elimina las fulles crearas
 
    Sheets(Hojas).Delete
 
    ' ---&--- Restaurant l'entorn
 
    Sheets("Dades").Select
    Range("F10").Select
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Si quieres con reverse de las hojas enviame un libro con los reverses si están en hojas diferentes, si están en la misma quizas no se tenga que tocar la macro.

No la he probado, Cambia el destino y el nombre del PDF

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Lluís (17 intervenciones) el 03/04/2022 12:25:33
Hola

La macro para imprimir en un único pdf se detiene en la linea 37 - Sheets(Sheets.Count).Name = Hojas(Punt). Adjunto el archivo (SE099_Nou) con la macro para grabar un único pdf incorporada.

Incluyo otro archivo (SE099_Revers@Anvers) que tiene incorporadas los reversos tanto para "portada" como "llibreta". También me gustaría incluir la posibilidad de grabarla en un único pdf.,

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Lluís (17 intervenciones) el 04/04/2022 13:16:42
La macro para imprimir el PDF a una cara se para en la linea 55 - Sheets(Hojas).Select
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Antoni Masana (2477 intervenciones) el 05/04/2022 20:28:05
Sale un error o solo tres botones que ponen: Continuar - Finalizar - Depurar.

Si sale un error debe ser por que no se incluyo al principio de todo: Option Base 1 Si esta puesto ¿Que error sale?
Ver el principio de la macro:

1
2
3
4
5
6
Option Explicit
Option Base 1
 
Sub PrintLlibreta()
    Dim a As Integer, Inici As Integer, _
                      Final As Integer

Si salen los tres botones se le deba dar al de continuar.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Lluís (17 intervenciones) el 25/04/2022 13:47:03
Hola

Solo salen los botones Finalizar - Depurar. El de Continuar no está activo.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Imprimir n páginas de un formulario insertando el número de página en una celda

Publicado por Antoni Masana (2477 intervenciones) el 25/04/2022 14:19:23
Como especifiqué anteriormente hay que añadir estas dos líneas en el principio del código:

1
2
Option Explicit
Option Base 1

Adjunto los ficheros modificados.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar