El método ExportAsFixedFormat de Microsoft Excel 2007 permite exportar un archivo con el formato que se especifique. La sintaxis de este método es la siguiente:
expresión.ExportAsFixedFormat(Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish)
Donde expresión es la variable que representa un objeto Worksheet mientras que los parámetros son los siguientes:
Type.- Define el tipo de formato al que se debe exportar. Puede ser xlTypePDF o xlTypeXPS.
Filename.- Indica el nombre del archivo que se debe guardar; se puede incluir una ruta de acceso completa.
Quality.- Puede ser xlQualityStandard o xlQualityMinimum.
IncludeDocProperties.- True indica que se deben incluir las propiedades de los documentos, False indica lo contrario.
IgnorePrintAreas.- True indica que se omiten las áreas de impresión establecidas al publicar el libro, False indica lo contrario
From.- Número de la página en la que comienza la publicación.
To.- Número de la última página que se va a publicar.
OpenAfterPublish.- True indica que se muestra el archivo en el visor después de haberlo publicado, False indica lo contrario.
Para guardar un rango de celdas la sintaxis sería como la siguiente:
Sheets("Sheet1").Range("A1:E10").ExportAsFixedFormat ...
Guardar rango de celdas como PDF
Por: Christian Gózar
10/02/2014 a las 5:06 pm
Al ejecutar la función obtengo el error "5" indicando que el metodo o el argumento no es valido. Estoy tratando de hacerlo en MS Office 2010.
18/06/2014 a las 4:11 pm
Funciona perfecto, pero mi duda es como puedo hacer para el rango sera variable, es decir que pueda elegir diferentes rango a exportar, espero haberme dado a entender
slds. y gracias de antemano
26/12/2016 a las 12:59 pm
Sub TestExportAsFixedFormat()
Dim range_value As String
Dim name As String
range_value = InputBox("Ingresa el rango de celdas que deseas guardar", "Rango")
name = InputBox("Ingresa el nombre del archivo", "Ingresa nombre")
Dim rng As Range
Set rng = Range(range_value)
Dim fileName As String
fileName = "C:\Users\Usuario1\Downloads\" + name + ".pdf"
rng.ExportAsFixedFormat Type:=xlTypePDF, _
fileName:=fileName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=True, _
From:=1, To:=1, OpenAfterPublish:=True
End Sub
10/07/2015 a las 9:04 am
Me funciona perfecto y logré adaptarlo a mi necesidad. Muchas Gracias por el aporte.
Yo imprimos recibos de clientes. Mi Aplicación realiza impresiones individuales de cada recibo y con esta ayuda tuya, ahora puedo guardar un respaldo en PDF de cada recibo.
Una consulta.
¿Se podría hacer que en el proceso de impresión de cada recibo se vayan agregando dentro del mismo documento "pdf"; es decir si imprimo 20 recibos, que no me genere 20 "pdf", sino solo uno con 20 páginas conteniendo cada una, cada uno de los recibos???
Espero haberme hecho entender.
Nuevamente Muchas Gracias por tu aporte.
Saludos.
13/02/2017 a las 12:24 am
Hola Estoy Trabajando con esta Macro pero necesito que me pregunte cuantas hojas deseo exportar quien me puede ayudar
Sub Exportar_Cotizacion_PDF()
Ans = MsgBox("Seguro quiere Guardar en PDF la Cotizacion?", vbYesNo, "Aviso")
If Ans = vbYes Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Daniel\Cotizaciones\Cotizaciones PDF\2017\" _
& "DE" & Range("G3") & " " & Range("D13").Value _
, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End If
End Sub
17/03/2017 a las 12:56 am
Buenas Noches, yo lo haría así, no se si se ajuste a lo que necesita, espero le sea de utilidad:
Sub Exportar_Cotizacion_PDF()
Dim rng As Range
Set rng = Range("g3:d13")
ActiveSheet.PageSetup.PrintArea = rng
Dim fileName As String
fileName = "C:\Temp\cotizacion.pdf"
Ans = MsgBox("Seguro quiere Guardar en PDF la Cotizacion?", vbYesNo, "Aviso")
If Ans = vbYes Then
rng.ExportAsFixedFormat Type:=xlTypePDF, _
fileName:=fileName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=True, _
From:=1, To:=1, OpenAfterPublish:=True
End If
End Sub
01/06/2017 a las 11:31 am
Hola
Me gustaría saber que se cambiaría para guardar un campo selecionado a jpg
08/08/2017 a las 12:58 pm
Hola.
Buenas tardes.
Necesito implementar el mismo procedimiento pero para guardar un rango seleccionado como imagen jpg o png?
25/03/2022 a las 10:22 am
Hola buenos dias, me funciona como lo requerio imprimir un area en especifica, pero como puedo hacer para configurar los margenes de la hoja, muchas gracias por el aporte, lo coloque asi pero no me los guarda
Sub imprimir()
Set wsAsigVer = Worksheets("ASIGNACION_VERIFICADOR")
wsAsigVer.Select
With wsAsigVer.PageSetup
.LeftMargin = Application.InchesToPoints(0.8)
.RightMargin = Application.InchesToPoints(0.6)
.TopMargin = Application.InchesToPoints(0.6)
.BottomMargin = Application.InchesToPoints(0.6)
.Orientation = xlLandscape
.FitToPagesWide = 1
End With
wsAsigVer.Range("I2:Q30").ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityMinimum, IncludeDocProperties:=true, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
30/05/2022 a las 4:30 am
Hola, estoy intentando crear un pdf incluyendo dos hojas y seleccionando el rango.
TargetRange y TargetRange2 son los rangos que quiero mostrar.
........................Este es el codigo..............
Set TargetSheet = ThisWorkbook.Sheets("Hoja1")
Set TargetSheet2 = ThisWorkbook.Sheets("Hoja2")
Dim TargetRange As Range
Dim TargetRange2 As Range
Set TargetRange = TargetSheet.Range("E1:J22")
Target2_endrow = TargetSheet2.Cells(3, 1).End(xlDown).Row
Set TargetRange2 = TargetSheet2.Range("A1:f" & Target2_endrow)
If myFile "False" Then
TargetRange.ExportAsFixedFormat & TargetRange2.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=myFile, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
......................fin del código.........................
El error esta aquí y no consigo saber cual es el correcto lenguaje para indicarle;
TargetRange.ExportAsFixedFormat & TargetRange2.ExportAsFixedFormat
12/08/2022 a las 2:34 pm
Funciona muy bien, Perfecto!!1
Gracias por compartir conocimientos