Exportar ciertas paginas a PDF desde Excel VBA

Para Elsa:

Buenas tardes Elsa, Por favor, si me puedes ayudar con un inconveniente que tengo en una cotización que contiene 2 páginas, para exportar 1 sólo archivo a PDF desde un botón de comando en un formulario, aclarando que no siempre voy a necesitar exportar las 2 páginas, algunas veces sólo es la primera página y otra veces las 2; el problema es que siempre me exporta las 2 aunque necesite sólo la primera.

Anexo el código para que por favor me ayudes si es posible... Muchas gracias.

Dim cliente1 As String
Dim recibo22 As Integer
Dim ruta as string
Sheets("formato_busqueda").Select
ruta="D:\cotizacion jd\informes\
Range("C13").Value = cmbcliente.Value
Range("D10").Value = txtcotiza.Value
Range("C47").Value = cmbcliente.Value
Range("D44").Value = txtcotiza.Value
cliente1 = cmbcliente.Value
recibo22 = txtcotiza.Value
If Range("B21").Value <> "" And Range("B55").Value = "" Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _Filename:=ruta & cliente1 & "-" & txtcotiza.Value, _Quality:=xlQualityStandard, IncludeDocProperties:=True, _IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=True
Else
If Range("B21").Value <> "" And Range("B55").Value <> "" Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _Filename:=ruta & cliente1 & "-" & txtcotiza.Value, _Quality:=xlQualityStandard, IncludeDocProperties:=True, _IgnorePrintAreas:=False, From:=1, To:=2, OpenAfterPublish:=True
End If
End If
Respuesta
1

Lo que entiendo es que tendrás 2 hojas pero si solo se completa una, la otra no debe ser exportada.

Entonces en tu evaluación del contenido de la celda B55 debes configurar el área de impresión. También controlo que si no hay datos en B21 envíe un mensaje y cancele.

If Range("B21") = "" Then
    MsgBox "NO hay datos para exportar", , "Información"
    Exit Sub
End If
'control de cant de hojas
If Range("B55") = "" Then
    ActiveSheet.PageSetup.PrintArea = "$A1:H43"   'ajusta el rango de cada hoja
Else
    ActiveSheet.PageSetup.PrintArea = "$A1:H86"
End If
'exporta el PDF
On Error Resume Next
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & cliente1 & "-" & txtcotiza.Value, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

Esto te evita tener que crear otra hoja para la impresión como te sugirieron antes. Solo deberás ajustar el rango de impresión en cada instrucción 'Printarea'.

Sdos y no olvides valorar mi respuesta.

Hola Elsa, buenas noches, cómo estás? Te cuento que me sigue exportando las 2 páginas aunque sólo tenga registrado datos en la hoja 1. No se si te puedo pasar el archivo por correo para que lo veas y me digas cuál es el error?

Espero tu respuesta... muchas gracias

Quizás solo no hayas ajustado bien los rangos de impresión. Yo me basé en la imagen. Aquí te tu código completo:

Sub Galvis()
'ajustada x Elsamatilde
Dim cliente1 As String
Dim recibo22 As Integer
Dim ruta As String
Sheets("formato_busqueda").Select
ruta = "D:\cotizacion jd\informes\"
Range("C13").Value = cmbcliente.Value
Range("D10").Value = txtcotiza.Value
Range("C47").Value = cmbcliente.Value
Range("D44").Value = txtcotiza.Value
cliente1 = cmbcliente.Value
recibo22 = txtcotiza.Value
If Range("B21") = "" Then
    MsgBox "NO hay datos para exportar", , "Información"
    Exit Sub
End If
'control de cant de hojas
If Range("B55") = "" Then
    ActiveSheet.PageSetup.PrintArea = "$A1:$H43"   'ajusta el rango de la primer hoja
Else
    ActiveSheet.PageSetup.PrintArea = "$A1:$H86"   'ajusta el rango de las 2 hojas
End If
'exporta el PDF
On Error Resume Next
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & cliente1 & "-" & txtcotiza.Value, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Si aún así no te exporta como es debido enviame tu libro indicándome en qué formato de hoja debiera imprimir (A4??). Mis correos se encuentran en sección Contactos de mi sitio que dejo al pie,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas