Excel - Error en macro que exporta a PDF con IF

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

Error en macro que exporta a PDF con IF

Publicado por Roberto Carlos (3 intervenciones) el 25/11/2018 21:52:12
Hola compañeros, buenas tardes. LLevo 2 semanas dándole vuelta a la sintaxis de una macro, no soy informático asi que me he ido puros tutoriales de youtube: el objetivo es imprimir en pdf una pestaña dependiendo dell número de una celda asi si el número es 2 imrpime la pestaña Resumen2, y asi, lo hice con IF pero siempre me da error:



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
Sub Imprimir()
 
Dim ruta As String
 
Dim hoja As Worksheet
 
Dim num As Integer
 
 
 
Application.ScreenUpdating = False
 
num = Range("d23")
 
ruta = ThisWorkbook.Path & "\"
 
Sheets("Cotizador").Visible = True
 
If num = 4 Then
 
hoja = Sheets("Resumen4")
 
Sheets("Resumen4").Activate
 
hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
 
Sheets("Resumen4").Visible = False
 
    Else
 
     If num = 3 Then
 
    hoja = Sheets("Resumen3")
 
    Sheets("Resumen3").Activate
 
    hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
 
    Sheets("Resumen3").Visible = False
 
        Else
 
         If num = 2 Then
 
    hoja = Sheets("Resumen2")
 
    Sheets("Resumen2").Activate
 
    hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
 
    Sheets("Resumen2").Visible = False
 
            Else
 
          If Range("d23") = 1 Then
 
            hoja = Sheets("Resumen1")
 
            Sheets("Resumen1").Activate
 
            hoja.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
 
            Sheets("Resumen1").Visible = False
 
            Else
 
'Si no hay datos que no Imprimima y que continue
 
MsgBox "La hoja no se puede Imprimir", vbQuestion, "gracias"
 
End If
 
End If
 
End If
 
End If
 
'-------------------------------------------------------
 
Application.ScreenUpdating = True
 
End Sub
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

Error en macro que exporta a PDF con IF

Publicado por Antoni Masana (2477 intervenciones) el 26/11/2018 12:35:00
Te pongo una estructura de código más simple y algunas preguntas en el texto.

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
Sub Imprimir()
    Dim ruta As String
    Dim hoja As Worksheet
    Dim num As Integer
 
    Application.ScreenUpdating = False
 
    num = Range("d23")                        ' <--- ¿En que hoja esta esta Celda?
    ruta = ThisWorkbook.Path & "\"
    Sheets("Cotizador").Visible = True        ' <--- ¿Para que visualizas esta hoja?
 
    If num >=1 and Num <= 4 Then
        hoja = Sheets("Resumen" & Num)           ' <--- No se que utilidad tiene esta linea
        Sheets("Resumen" & Num).Activate         ' <--- Si esta oculta. ¿La activa? ¿La imprime?
        hoja.ExportAsFixedFormat Type:=xlTypePDF, _
                                 Filename:=ruta, _       ' <--- ¿Cual es el nombre del fichero?
                                 Quality:=xlQualityStandard, _
                                 IncludeDocProperties:=True, _
                                 IgnorePrintAreas:=False, _
                                 OpenAfterPublish:=True
        Sheets("Resumen" & Num).Visible = False             ' <--- ¿Ocultas la hoja?
    Else
        ' --- Si no hay datos que no Imprima y que continúe
        MsgBox "La hoja no se puede Imprimir", vbQuestion, "gracias"
    End If
 
    ' <---> Y ahora ¿Cual es la hoja activa? ¿la que esta oculta?
 
    Application.ScreenUpdating = True
End Sub

No he podido probar la macro porque hay cosas que no las entiendo.

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

Error en macro que exporta a PDF con IF

Publicado por Antoni Masana (2477 intervenciones) el 26/11/2018 12:59:06
He conseguido que funcione y he realizado algunos pequeños cambios.

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
Sub Imprimir()
    Dim ruta As String
    Dim num As Integer
 
    Application.ScreenUpdating = False
 
    num = Range("d23")               ' <---- ¿De que hoja lee?
    ruta = ThisWorkbook.Path & "\"
    Sheets("Cotizador").Visible = True            '<--- Sigo sin ver la utilidad
 
    If num >= 1 And num <= 4 Then
        Sheets("Resumen" & num).Activate  ' <--- Si esta oculta. ¿La activa? ¿La imprime?
 
        ' ---&---  El nombre del PDF es el mismo que la hoja
 
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=ruta & "Resumen" & num, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
 
        Sheets("Resumen" & num).Visible = False    ' <--- ¿Ocultas la hoja?
    Else
        ' --- Si no hay datos que no Imprima y que continúe
        MsgBox "La hoja no se puede Imprimir", vbQuestion, "gracias"
    End If
 
    ' <---> Y ahora ¿Cual es la hoja activa? ¿la que esta oculta?
 
    Application.ScreenUpdating = True
End Sub

Mejoramos un poco.

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
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error en macro que exporta a PDF con IF

Publicado por Roberto Carlos (3 intervenciones) el 26/11/2018 14:47:15
Muchas gracias Anrtoni!!!!

Sobre tus dudas, tienes toda la razón.... la macro la hice inicialmente para imprimir normal, por eso tiene algunos elementos que quizá no hacen lógica con la impresión en PDF.

La celda d23 está en la pestaña "Cotizador"; el objetivo es identificar en esa celda un número que de acuerdo a eso imprima la pestaña que corresponda, y que la deje oculta, xq las pestañas no son visibles. Mi intención con el if era pues esa, que dependiendo del núm de la d23 me imprima en pdf, y eso queda almacenado en la variable hoja, que va tomando el valor de la pestaña que es escogida.

Voy a correr tu macro, te agradezco mucho el apoyo!

Roberto Guillén
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

Error en macro que exporta a PDF con IF

Publicado por Antoni Masana (2477 intervenciones) el 26/11/2018 15:38:25
Con lo comentado te pongo unos cambios:

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
Sub Imprimir()
    Dim ruta As String
    Dim num As Integer
 
    Application.ScreenUpdating = False
 
    Sheets("Cotizador").Visible = True
    Sheets("Cotizador").Activate
    num = Range("d23")               ' <---- ¿De que hoja lee?
 
    ruta = ThisWorkbook.Path & "\"
 
    If num >= 1 And num <= 4 Then
        Sheets("Resumen" & num).Visible = True
        Sheets("Resumen" & num).Activate
 
        ' ---&---  El nombre del PDF es el mismo que la hoja
 
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=ruta & "Resumen" & num, _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
 
        Sheets("Resumen" & num).Visible = False    ' <--- ¿Ocultas la hoja?
    Else
        ' --- Si no hay datos que no Imprima y que continúe
        MsgBox "La hoja no se puede Imprimir", vbQuestion, "gracias"
    End If
 
    Sheets("Cotizador").Activate
    Sheets("Cotizador").Visible = False
 
    Sheets("?????").Activate                ' <-- Falta  la hoja que debe quedar activa
 
   Application.ScreenUpdating = True
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Error en macro que exporta a PDF con IF

Publicado por Roberto Carlos (3 intervenciones) el 27/11/2018 06:20:51
Hey te lo agradezco mucho, de esa forma me corrió perfectamente.
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