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