Excel - Boton para imprimir pdf

 
Vista:
sin imagen de perfil

Boton para imprimir pdf

Publicado por EIDER (7 intervenciones) el 07/02/2024 18:44:57
Buenas noches a todos y espero me puedan ayudar, necesito imprimir los registros de un listbox que se cargan desde una base de datos. así como se ve en el listbox se usa un filtro para dividirlos por cédula y estos son los que se tienen que imprimir
ima

Se tiene que imprimir en este formato, cada registro tiene que quedar en cada apartado y si los registros son mas de los que se tiene espacio se tiene que crear otro formato igual para poder imprimir todos los registros. Adjunto mi archivo y por favor si me pueden ayudar, de antemano mucha gracias a todos.


ima2
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

Boton para imprimir pdf

Publicado por Antoni Masana (2499 intervenciones) el 08/02/2024 13:55:29
No entiendo nada de lo que explicas.

Hay un mensaje firmado por EIDER con un libro con el mismo formulario y no estaba claro que es lo que necesita.
Este tampoco esta claro lo que necesita.
Veo dos tablas de datos y un formulario y no hay libro de muestra.

¿Que es lo que se tiene que imprimir?
¿La primera tabla?
¿La segunda tabla?
¿El formulario? y si es el formulario ¿De donde toma los datos? ¿Tabla 1 o Tabla 2?
¿Donde se ponen los datos en el formulario?
¿Tienes alguna macro?

Saldos.
\\//_
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

Boton para imprimir pdf

Publicado por EIDER (7 intervenciones) el 19/02/2024 06:12:34
MUCHAS GRACIAS POR SU AYUDA,
LE ADJUNTO MI ARCHIVO AL FINAL.
¿Que es lo que se tiene que imprimir? Se tiene que imprimir los valores que están señalados en la imagen 1, usando el multiselect para crear un ciclo el cual va a llenar un formulario señalado en la imagen 2, el formato solo puede almacenar a 6 registros para visualizar lo que quiero realizar es que si hay mas de 6 registros se cree una hoja igual y que ahí siga el ciclo colocando la información.

TABLA1

TABLA2
¿El formulario? y si es el formulario ¿De donde toma los datos? ¿Tabla 1 o Tabla 2?
¿Donde se ponen los datos en el formulario?
¿Tienes alguna macro?
Creo que con la macro sera mas fácil entender
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

Boton para imprimir pdf

Publicado por Antoni Masana (2499 intervenciones) el 21/02/2024 00:37:31
¿Como llega a ver los 6 registros en el formulario?

¿Que he de ejecutar para ver lo que hace?

Y más importante: ¿Como se llama la parte del código que rellena el formulario y lo pasa a PDF?

A modo de esquema te explico lo que hay que hacer:


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
Sub Macro()
    Dim Num as Byte, ...
...
    Num = 0
    Fila=2
    While Cells(Fila, "A") <> EMPTY
        Num = Num + 1
        ' ---- Aqui rellena los datos del primer registro
        ...
        ' ---- Ahora mira si la hoja esta llena
        IF Num = 6 Then
            ' --- Imprime
            ' --- Limpia el Formulario
            Num = 0
        End If
        Fila = Fila + 1
    Wend
    ' --- Ahora imprime si queda algo pendiente,
    ' --- En el caso de que tenga 6, 12, 18, etc registros esta condición no se cumple.
    IF Num > 0 Then
        ' --- Imprime
        ' --- Limpia el Formulario
    End If
    ...
End Sub

Si no lo entiendes no te preocupes, contesta a lo de arriba y te arreglo el código.

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

Boton para imprimir pdf

Publicado por EIDER (7 intervenciones) el 21/02/2024 02:24:16
¿Que he de ejecutar para ver lo que hace?
En el botón marcado abre lo que es el formulario
REFERE1
Al abrir sale esta tabla la cual solo me sirve para filtrar mis registros
REFERE2
¿Como llega a ver los 6 registros en el formulario?
En esta tabla se visualizan los registros los cuales se tienen que seleccionar para crear el archivo, pero esos 6 registros son los que caben en el formato de impresión, lo que quiero e poder imprimir los que yo quiera añadiendo hojas al archivo para imprimir todos los seleccionados.
REFERE3

Y más importante: ¿Como se llama la parte del código que rellena el formulario y lo pasa a PDF?
En ese botón esta el código el cual ya tiene un ciclo para llenar los datos solo falta que se creen mas hojas si tengo mas registros por imprimir, dejo el código también (Call Imprimir es un modulo el cual hace el archivo PDF y le da nombre al archivo)
REFERE4

Private Sub CommandButton2_Click()
Dim var As Integer
var = Me.ListBox2.ListIndex
If var = -1 Then
MsgBox "DEBES SELECCIONES A UN PACIENTE", vbExclamation, "ADVERTENCIA"
Exit Sub
End If
Dim C, G, N, N1, N2 As String
Dim I As Single
C = 15
G = 14
N = 17
'N1 = 17
'N2 = 17
For I = 0 To ListBox2.ListCount - 1

If ListBox2.Selected(I) = True Then

Hoja10.Range("A" & G) = ListBox2.List(I, 0)
Hoja10.Range("B" & C) = ListBox2.List(I, 5)
Hoja10.Range("C" & N) = ListBox2.List(I, 1)
Hoja10.Range("D" & N) = ListBox2.List(I, 2)
Hoja10.Range("E" & N) = ListBox2.List(I, 3)
Hoja10.Range("H" & G) = ListBox2.List(I, 4)
Hoja10.Range("G" & G) = ListBox2.List(I, 6)
Hoja10.Range("P" & G) = ListBox2.List(I, 7)
Hoja10.Range("S" & G) = ListBox2.List(I, 8)

Hoja10.Range("AH5") = ListBox2.List(I, 9)
Hoja10.Range("AK5") = ListBox2.List(I, 10)
Hoja10.Range("AN5") = ListBox2.List(I, 11)
Hoja10.Range("AY5") = ListBox2.List(I, 12)

Hoja10.Range("BB3") = Format(Now(), "DD")
Hoja10.Range("BE3") = Format(Now(), "MM")
Hoja10.Range("BH3") = Format(Now(), "YYYY")


Hoja10.Range("AM" & G) = ListBox2.List(I, 13)
Hoja10.Range("AO" & G) = ListBox2.List(I, 14)

'MsgBox Hoja10.Range("C" & N)
'MsgBox Hoja10.Range("D" & N1)
'MsgBox Hoja10.Range("E" & N2)
'Hoja1.Range("B" & C) = ListBox1.List(I, 1)
'Hoja1.Range("C" & C) = ListBox1.List(I, 2)

ListBox2.Selected(I) = False

C = C + 4
G = G + 4
N = N + 4
End If

Next I
Call Imprimir
End Sub
Te agradezco mucho tu ayuda eres muy bueno para la programacion, saludooos amigo.
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

Boton para imprimir pdf

Publicado por Antoni Masana (2499 intervenciones) el 21/02/2024 21:19:13
Tengo que rectificar y replantearme el problema.

No es lo mismo imprimir en la impresora que crear un PDF.

Cuando se envía a la impresora el procedimiento es:
- Rellenar el formulario con los datos del 1 al 6.
- Enviar a la impresora.
- Limpiar el formulario.
- Rellenar el formulario con los datos del 7 al 12.
- Enviar a la impresora.
- Limpiar el formulario.
y así hasta el final.

¿Que pasa con el PDF? pues que si tienes 30 registro hay que rellenar 5 hojas y enviarlas todas juntas a generar el PDF.

PRIMER TROPIEZO



¿Como voy a simular esta situación con solo 2 registros?

Los pasos a seguir son los siguientes:

- Contar cuantos datos hay que imprimir para saber cuantas impresos se necesitan.
- Con los datos del 1 al 6 van en la hoja impresión
- Con los datos del 7 al 12 van en la hoja impresión 1
- Con los datos del 13 al 18 van en la hoja impresión 2
- Así mismo con el resto
- Si hay mas de 6 registros crear copias de la hoja impresión
- Rellenar cada hoja Impresión con los datos correspondientes
- Seleccionar todas las hojas Impresión
- Generar el PDF
- Limpiar la hoja impresión
- Borrar las otras hojas impresión

Y para eso necesito tener más de dos registros que imprimir.

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

Boton para imprimir pdf

Publicado por EIDER (7 intervenciones) el 22/02/2024 01:12:52
Perdón por mi error tienes razón necesito generar el PDF la impresión ya se haría después de crear el documento.
Los pasos a seguir son los siguientes:

- Contar cuantos datos hay que imprimir para saber cuantas impresos se necesitan.
- Con los datos del 1 al 6 van en la hoja impresión
- Con los datos del 7 al 12 van en la hoja impresión 1
- Con los datos del 13 al 18 van en la hoja impresión 2
- Así mismo con el resto
- Si hay mas de 6 registros crear copias de la hoja impresión
- Rellenar cada hoja Impresión con los datos correspondientes
- Seleccionar todas las hojas Impresión
- Generar el PDF
- Limpiar la hoja impresión
- Borrar las otras hojas impresión

Amigo eso es exactamente lo que quiero que haga el botón, pero los dos registros que se muestran solo son de ejemplo, al final serán muchos los registros, siento mucho no poder explicar bien mi problema, si puedes ayudarme con esto yo te pagaría por tu ayuda amigo gracias.
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

Boton para imprimir pdf

Publicado por Antoni Masana (2499 intervenciones) el 22/02/2024 13:26:48
He modificado varias cosas.

En el formulario: STATUS en el evento Private Sub btnImprimir_Click()

Cambio:
1
Call Imprimir

por:
1
Call Imprimir(Array("Impresion"))

NOTA:



Esto:

1
2
3
4
5
6
7
8
9
Sub Macro_0()
    Dim Tabla(0) As String
    Tabla(0) = "Impresion"
    Call Macro_2(Tabla)
End Sub
 
Sub Macro_2(Tabla)
    MsgBox Tabla(0)
End Sub

Es lo mismo que esto:

1
2
3
4
5
6
7
Sub Macro_1()
    Call Macro_2(Array("Impresion"))
End Sub
 
Sub Macro_2(Tabla)
    MsgBox Tabla(0)
End Sub


En el formulario: REPORTEDOC he modificado el ListBox2 para ver más líneas y el evento: Private Sub CommandButton2_Click()

He modificado el módulo3

En la hoja Registro he ampliado el número de registros a base de COPY + PASTE

Adjunto libro y PDF de muestra

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
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

Boton para imprimir pdf

Publicado por Antoni Masana (2499 intervenciones) el 23/02/2024 14:46:15
El modulo3 lo hubiese programado así porque parto del FOR que rellena la hoja

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
Sub Imprimir(Tabla)
    Dim a As Integer, NombreConsulta As Variant, Archivo As String, _
        C As Byte, G As Byte, N As Byte
 
    NombreConsulta = Sheets("Impresion").Range("AY5").Value
    Archivo = "C:\Users\L560\Desktop\NuevoProyecto\" & NombreConsulta & ".pdf"
 
    Sheets(Tabla).Select
    Range("A2:BK41").Select
    Selection.ExportAsFixedFormat Type:=xlTypPDF, _
                                  Filename:=Archivo, _
                                  Quality:=xlQualityStandard, _
                                  IncludeDocProperties:=True, _
                                  IgnorePrintAreas:=False, _
                                  OpenAfterPublish:=True
    C = 15: G = 14: N = 17
    With Sheets(Tabla(Hoja))
        For I = 1 To 6
            .Range("A" & G) = Empty
            .Range("B" & C) = Empty
            .Range("C" & N) = Empty
            .Range("D" & N) = Empty
            .Range("E" & N) = Empty
            .Range("H" & G) = Empty
            .Range("G" & G) = Empty
            .Range("P" & G) = Empty
            .Range("S" & G) = Empty:  C = C + 4
            .Range("AM" & G) = Empty: N = N + 4
            .Range("AO" & G) = Empty: G = G + 4
        Next
        .Range("AH5") = Empty
        .Range("AK5") = Empty
        .Range("AN5") = Empty
        .Range("AY5") = Empty
 
        .Range("BB3") = Empty
        .Range("BE3") = Empty
        .Range("BH3") = Empty
 
        .Range("A1").Select
    End With
 
    ' ---&--- Borra las hojas de impresión
 
    Application.DisplayAlerts = False
    For a = 1 To UBound(Tabla)
        Sheets(Tabla(a)).Delete
    Next
    Application.DisplayAlerts = True
End Sub

En lugar de hacerlo de esta forma:

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Sub Imprimir()
 
 
Sheets("Impresion").Select
Dim NombreConsulta As Variant
 
NombreConsulta = Sheets("Impresion").Range("AY5").Value
Range("A2:BK41").Select
Selection.ExportAsFixedFormat Type:=xlTypPDF, Filename:= _
"C:\Users\L560\Desktop\NuevoProyecto\" & NombreConsulta & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
 
Sheets("Impresion").Range("A14") = Empty
Sheets("Impresion").Range("A18") = Empty
Sheets("Impresion").Range("A22") = Empty
Sheets("Impresion").Range("A26") = Empty
Sheets("Impresion").Range("A30") = Empty
Sheets("Impresion").Range("A34") = Empty
 
'Sheets("Impresion").Range("A14") = Empty
Sheets("Impresion").Range("AH5") = Empty
Sheets("Impresion").Range("AK5") = Empty
Sheets("Impresion").Range("AN5") = Empty
Sheets("Impresion").Range("AY5") = Empty
 
Sheets("Impresion").Range("G14") = Empty
Sheets("Impresion").Range("G18") = Empty
Sheets("Impresion").Range("G22") = Empty
Sheets("Impresion").Range("G26") = Empty
Sheets("Impresion").Range("G30") = Empty
Sheets("Impresion").Range("G34") = Empty
 
Sheets("Impresion").Range("H14") = Empty
Sheets("Impresion").Range("H18") = Empty
Sheets("Impresion").Range("H22") = Empty
Sheets("Impresion").Range("H26") = Empty
Sheets("Impresion").Range("H30") = Empty
Sheets("Impresion").Range("H34") = Empty
 
Sheets("Impresion").Range("B15") = Empty
Sheets("Impresion").Range("B19") = Empty
Sheets("Impresion").Range("B23") = Empty
Sheets("Impresion").Range("B27") = Empty
Sheets("Impresion").Range("B31") = Empty
Sheets("Impresion").Range("B35") = Empty
 
Sheets("Impresion").Range("C17") = Empty
Sheets("Impresion").Range("C21") = Empty
Sheets("Impresion").Range("C25") = Empty
Sheets("Impresion").Range("C29") = Empty
Sheets("Impresion").Range("C33") = Empty
Sheets("Impresion").Range("C37") = Empty
 
Sheets("Impresion").Range("D17") = Empty
Sheets("Impresion").Range("D21") = Empty
Sheets("Impresion").Range("D25") = Empty
Sheets("Impresion").Range("D29") = Empty
Sheets("Impresion").Range("D33") = Empty
Sheets("Impresion").Range("D37") = Empty
 
Sheets("Impresion").Range("E17") = Empty
Sheets("Impresion").Range("E21") = Empty
Sheets("Impresion").Range("E25") = Empty
Sheets("Impresion").Range("E29") = Empty
Sheets("Impresion").Range("E33") = Empty
Sheets("Impresion").Range("E37") = Empty
 
Sheets("Impresion").Range("P14") = Empty
Sheets("Impresion").Range("P18") = Empty
Sheets("Impresion").Range("P22") = Empty
Sheets("Impresion").Range("P26") = Empty
Sheets("Impresion").Range("P30") = Empty
Sheets("Impresion").Range("P34") = Empty
 
Sheets("Impresion").Range("S14") = Empty
Sheets("Impresion").Range("S14") = Empty
Sheets("Impresion").Range("S14") = Empty
Sheets("Impresion").Range("S14") = Empty
Sheets("Impresion").Range("S14") = Empty
Sheets("Impresion").Range("S14") = Empty
 
Sheets("Impresion").Range("AM14") = Empty
Sheets("Impresion").Range("AM18") = Empty
Sheets("Impresion").Range("AM22") = Empty
Sheets("Impresion").Range("AM26") = Empty
Sheets("Impresion").Range("AM30") = Empty
Sheets("Impresion").Range("AM34") = Empty
 
Sheets("Impresion").Range("AO14") = Empty
Sheets("Impresion").Range("AO18") = Empty
Sheets("Impresion").Range("AO22") = Empty
Sheets("Impresion").Range("AO26") = Empty
Sheets("Impresion").Range("AO30") = Empty
Sheets("Impresion").Range("AO34") = Empty
 
Sheets("Impresion").Range("BB3") = Empty
Sheets("Impresion").Range("BE3") = Empty
Sheets("Impresion").Range("BH3") = Empty
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
1
Comentar
sin imagen de perfil

Boton para imprimir pdf

Publicado por EIDER (7 intervenciones) el 29/02/2024 01:52:56
Amigo agradezco mucho tu tiempo y ayuda que me brindaste quedo super bien muchas gracias de verdad
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