A pesar que desde Office 2007 (como complemento en dicha versión), Microsoft ha incluido la posibilidad de exportar en formato PDF sus archivos, es una pregunta muy frecuente en los foros de Excel la forma en la cuál se puede hacer mediante macros (VBA). Quizá la lógica nos diga a algunos/as que bastaría obtener dicho código usando la grabadora de macros con lo que tendríamos algo así:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Como se puede ver lo que se ha hecho es exportar la hoja activa (ActiveSheet) haciendo uso del método “ExportAsFixedFormat” y después vemos una serie de parámetros que la grabadora no nos explicará y que justamente ayudaremos a entender.
La web MSDN nos muestra la siguiente sintaxis para el método:
Expresión.ExportAsFixedFormat (Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)
Para usar dicho método es obligatorio incluir la “Expresión” que puede ser cualquiera de estos tipos de objeto: Workbook , Sheet , Chart o Range. Entonces, podemos mandar a exportar en pdf el libro completo, hojas, gráficos e incluso solo un rango especifico. Ejemplos:
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf"
Range("A1:C2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf"
Sheets("Hoja2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf"
Los otros parámetros del método trabajan y/o se usan del siguiente modo:
Nombre |
Descripción |
Type |
Es el parámetro que define el tipo de archivo en que se exportará. Puede ser de dos tipos: xlTypePDF (pdf) o xlTypeXPS (xps). Su uso es obligatorio. |
Filename |
Es la cadena que indica la ruta y/o el nombre del archivo que se guardará. Su uso es opcional. De no llenarse por defecto se guarda en la misma carpeta que el archivo Excel y con el mismo nombre. |
Quality |
Es opcional. Define la calidad del archivo que se exportara, puede ser xlQualityStandard (normal) o xlQualityMinimum (mínima). |
IncludeDocProperties |
Establece si las propiedades del documento deben incluirse o no. Sus valores son True (para incluir) o False (no las incluye). Es opcional. |
IgnorePrintAreas |
Es opcional. Establece si se ignora las áreas de impresión establecidas al publicar. Puede ser True para dicho efecto o False para que use las áreas de impresión establecidas al momento de la publicación. |
From |
Establece el número de página desde donde se comenzará a publicar/exportar. Si se omite el parámetro, comienza desde la primera página. No confundir página con hoja. |
To |
Establece el número de la última página que se publicará/exportará. Si se omite el parámetro, se publica/exporta hasta la última página. No confundir página con hoja. |
OpenAfterPublish |
Establece si el archivo se abrirá después de ser publicado/exportado. Sus valores pueden ser True o False. Es opcional. |
FixedFormatExtClassPtr |
Es opcional. Representa un puntero de la clase personalizada en un complemento que implementa la interfaz IMsoDocExporter COM que permite llamadas a una implementación alternativa de código para el formato del documento. El valor predeterminado es un puntero nulo. |
Siguiendo con los ejemplos, en éste solo se exporta a PDF desde la página 3 a la 6 de la “Hoja2”:
Sheets("Hoja2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf", From:= 3, To:= 6
En este otro ejemplo, se exporta un rango en calidad “Standard” y se abre el documento posterior a ser exportado:
Range("A1:C2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Abraham\Desktop\Libro1.pdf", Quality:= xlQualityStandard, OpenAfterPublish:=True
No olvidemos que los valores de parámetros como “Filename”, “From”, “To”, etc., pueden ser tomados de celdas o desde variables sin ningún problema si los valores ha sido bien establecidos:
Sheets("Hoja2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= Range("C12").Value , From:= Range("R3").Value, To:= Range("R4").Value
Dim PrimeraPagina As Long, UltimaPagina As Long
Dim RutayNombre as String
Let PrimeraPagina = Range("R3").Value
Let UltimaPagina = Range("R4").Value
Let RutayNombre= Range("C12").Value
Sheets("Hoja2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= RutayNombre, From:= PrimeraPagina, To:= UltimaPagina
Y esas son algunas cosas que es importante concoer para exportar a PDF (o XPS) nuestros archivos de Excel.
Hasta la próxima.
Abraham Valencia
Que buen tema. no habia visto una explicacion asi.
ResponderBorrarbuenos dias, trabajo para un ayuntamiento, y aqui cada uno tiene una sesion por servidores. tengo una hoja de excel con una macro para guardar pdf,en mi sesion sonde ha sido creada sunciona perfectamente, pero en el resto de sesiones de lso compañeros da error 1004, tiempo de ejecucion.
ResponderBorraresta es la macro.
Sub Imprime1()
Application.ScreenUpdating = False
If MsgBox("¿Desea Convertir a PDF?", vbQuestion + vbYesNo) = vbYes Then
'----------------------------------------------
Dim HResumen As Worksheet
Dim Ruta As String
Dim Titulo As String
Set HResumen = Worksheets("Hoja24")
Ruta = "\\SRVCREVI_FILES\Publico\Policia - Usuarios Policia\HORAS EXTRAS\HORAS-PDF"
Ruta = Ruta & "\"
Titulo = HResumen.Range("BN10").Text
'''===============================================================================
' 'Cells.Select
HResumen.Range("O1:BO47").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta & Titulo, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
'''===============================================================================
HResumen.Range("A1").Select
'----------------------------------------------
End If
End Sub
Alguien sabe el porque?
Gracias
por el nombre de la hoja , y el nombre de la ruta , la macro tiene que identificar el nombre del equipo ,para que no marque error
BorrarSoy nuevo en visual, me dicen que significa el := ??
ResponderBorrarSimplemente asigna valor a un parámetro
Borrarsi quiero guardar el resultado de una consulta de un formulario,
ResponderBorrarUserForm("frmBusq").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Ruta & "\" & NombreArchivo & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Al exportar para enviarlo por correo en PDF, aparece como archivo XLSM ¿porque?
ResponderBorrarSub ENVIAR2()
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"REPARACION 2024.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub