Error en macro con IF para imprimir diferentes pestañas

2 envíos / 0 nuevos
Último envío
r21g
Imagen de r21g
Offline
última acción: Hace 5 años 4 meses
alta: 25/11/2018 - 20:14
Puntos: 25
Error en macro con IF para imprimir diferentes pestañas

Hola compañeros. 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:

 

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

 

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
HolaAdemás de algunas cosas

Hola

Además de algunas cosas que se podrían mejorar en el código (pero que es normal si no lo dominas, y no es tan importante), veo una cosa que puede hacer que no funcione.

Aunque no has indicado qué es lo que te falla en concreto, esto que te pongo a continuación no es correcto:

hoja = Sheets("Resumen4")

Lo que ocurre es que Sheets("Resumen4") es un objeto, y debe ser asignado a una variable de objeto. Estas variables son diferentes a las variables de valor.

Imagino que ya sabrás que las variables pueden ser de tipo Variant, text, integer, long, etc. En el caso de los objetos, pueden ser casi ilimitados los tipos diferentes. En nuestro caso, podría ser un objeto genérico, o un objeto tipo worksheet.

El caso es que para asignar un objeto a una variable de objeto hay que utilizar la orden Set, así:

set hoja = Sheets("Resumen4")

Prueba esto a ver si se corrige en todas las líneas en las que asignas hojas a variables. Si no, insiste por aquí, pero intenta indicarnos en qué línea se produce el error y qué error concreto dice Excel que es.

 

Un saludo