Imprimir PDF en tamaño carta por defecto

Tengo un problema con una macro que cuando presiono un botón, genera automáticamente un archivo en formato pdf de una hoja donde se tiene un formato de factura; la macro funciona bien cuando la impresora predeterminada que tiene el equipo es tamaño carta, pero si el equipo tiene predeterminada una impresora POS, entonces el pdf sale en el tamaño de un tiquet, es decir sale cortado en varias hojas que tienen el ancho de un tiquet; la macro es esta:

Sub ImpPDF ()

    Application.ScreenUpdating = False

    Sheets("FORM FAC").Select

    Range("B2:AL70").Select 'rango de impresión

     archivo = ThisWorkbook.Path & "\FACTURAS\" & "Factura No." & n & ".pdf" ‘ruta donde se guarda

    Selection.ExportAsFixedFormat Type:=xlTypePDF, _

    Filename:=archivo, _

    Quality:=xlQualityStandard, IncludeDocProperties:=False, _

    IgnorePrintAreas:=False, OpenAfterPublish:=False

    'Call Muestra_Valores

End Sub

En ocasiones para que la macro me pregunte qué impresora debo utilizar para el pdf, le tengo que agregar esta instrucción para que uno seleccione la impresora que tiene un tamaño carta, de esta manera así la impresora predeterminada sea pos, dicho pdf se genera en tamaño carta, la instrucción es la siguiente y la impresora que selecciono es "Microsoft print to pdf":

Application.Dialogs(xlDialogPrinterSetup).Show

La pregunta es: ¿Cómo puedo hacer para que al guardar el pdf por defecto utilice la impresora "Microsoft print to pdf" sin necesidad que yo tenga que indicarle la impresora que se utilizará?

1 Respuesta

Respuesta
1

Pon al inicio de la macro esta línea:

Application.ActivePrinter = "Microsoft print to pdf"

Pon el nombre de la impresora entre comillas.

---

Pero me parece que también tienes que poner el puerto, algo como esto:

Application.ActivePrinter = "HP LaserJet Professional P 1102w en Ne03:"

Prueba y nos comentas.

Gracias por tomarse el tiempo de responder, probé las soluciones que me sugiere y al generar la macro me da error y se detiene en esa línea, probé colocando la instrucción en diferentes puntos de la macro y se detiene el proceso en la línea de código sugerida.

¿Revisaste el enlace?

Ejecuta la macro AAA, te dará como resultado una imagen como esta:

Después de ejecutar la macro AAA, regresas aquí y pegas la imagen.

Realiza lo siguiente:

Ejecuta la siguiente macro:

Sub SeleccionaImpresora()
  Dim cad As String
  Application.Dialogs(xlDialogPrinterSetup).Show
  MsgBox Application.ActivePrinter
End Sub

Cuando te aparezca la lista de impresoras, selecciona la opción:

"Microsoft print to pdf"

Presiona Aceptar

La macro envía este mensaje:

Aparece el nombre de la impresora y el puerto

En mi ejemplo aparece:

"Microsoft Print to PDF en Ne02:"

Ahora pon ese nombre completo en la macro, pero debes tomar el nombre que te aparece a ti.

Sub ImpPDF()
  Application.ScreenUpdating = False
  Application.ActivePrinter = "Microsoft Print to PDF en Ne02:"
  Sheets("FORM FAC").Select
  Range("B2:AL70").Select 'rango de impresión
  archivo = ThisWorkbook.Path & "\FACTURAS\" & "Factura No." & n & ".pdf"
  Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archivo, Quality:=xlQualityStandard, _
    IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Si tienes dudas. Entonces pon aquí las imágenes cuando ejecutas la macro SeleccionaImpresora y te ayudo a poner el nombre correcto en la macro ImpPDF.

Funciona perfecto, muchas gracias, me podría hacer un último favor?, y es que al darle aceptar el msgbox que muestra el nombre de la impresora y puerto de la impresora, este dato se guarde en una celda D8 de una hoja llamada "CONFIGURACIÓN", y que luego la instrucción Application.ActivePrinter, tome el dato del nombre de la impresora de dicha celda?

Gracias de antemano y disculpe la molestia.

[Con gusto te ayudo con todas tus peticiones. Valora esta respuesta.

Gracias nuevamente.

Macro 1:

Sub SeleccionaImpresora()
  Dim cad As String
  Application.Dialogs(xlDialogPrinterSetup).Show
  sheets("Configuracion").range("D8").value = Application.ActivePrinter
End Sub

Macro 2:

Sub ImpPDF()
  Application.ScreenUpdating = False
  Application.ActivePrinter = Sheets("Configuracion").Range("D8").Value
  Sheets("FORM FAC").Select
  Range("B2:AL70").Select 'rango de impresión
  archivo = ThisWorkbook.Path & "\FACTURAS\" & "Factura No." & n & ".pdf"
  Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archivo, Quality:=xlQualityStandard, _
    IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas