visual saveas print ignoreprintareas fileformat exportasfixedformat exportar excel vba pdf pdf-generation export-to-pdf

excel - print - vba saveas fileformat pdf



Guardar varias hojas en.pdf (4)

Tengo una hoja de cálculo de informes que recopila algunos datos de una base de datos y forma tres hojas de información resumida del informe. Quiero ejecutar la hoja de cálculo automáticamente desde la línea de comandos y hacer que guarde automáticamente las tres hojas de informes como archivos PDF.

Al principio pensé que podría tener una macro VBA en la hoja haciendo esto mediante una serie de "imprimir como PDF", pero eso requiere un cuadro de diálogo interactivo intermedio para especificar el nombre del archivo de salida. Luego encuentro que solo puedo guardar como pdf, y la macro puede configurar el nombre del archivo de salida. Sin embargo, esto crea tres archivos separados, y luego tengo que juntarlos externamente para fusionarlos.

(Es extraño que guardar como PDF solo guarde una hoja, mientras que otros modos de guardar parecen guardar todo el libro).

Sí, hay herramientas para fusionar los tres archivos más adelante, pero quiero saber si hay alguna manera fácil de hacer que Excel guarde varias hojas juntas como un archivo pdf.

Imprimo ahora por una serie de cosas como:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...

¿Podría hacer en cambio una sola declaración algo como (pseudo-código):

ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ...


Comience por seleccionar las hojas que desea combinar:

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:/tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True


En Excel 2013, simplemente seleccione varias hojas y haga un "Guardar como" y seleccione PDF como el tipo de archivo. Las múltiples páginas se abrirán en PDF al hacer clic en Guardar.


Recomiendo agregar la siguiente línea después de la exportación a PDF:

ThisWorkbook.Sheets("Sheet1").Select

(donde, por ejemplo, Sheet1 es la hoja individual en la que desea estar activo después)

Dejar varias hojas en un estado seleccionado puede causar problemas al ejecutar algún código. (por ejemplo, unprotect no funciona correctamente cuando se seleccionan varias hojas de forma activa).


Similar a la respuesta de Tim, pero con una verificación de 2007 (donde la exportación de PDF no se instala de forma predeterminada):

Public Sub subCreatePDF() If Not IsPDFLibraryInstalled Then ''Better show this as a userform with a proper link: MsgBox "Please install the Addin to export to PDF. You can find it at http://www.microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041". Exit Sub End If ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ActiveWorkbook.Path & Application.PathSeparator & _ ActiveSheet.Name & " für " & Range("SelectedName").Value & ".pdf", _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub Private Function IsPDFLibraryInstalled() As Boolean ''Credits go to Ron DeBruin (http://www.rondebruin.nl/pdf.htm) IsPDFLibraryInstalled = _ (Dir(Environ("commonprogramfiles") & _ "/Microsoft Shared/OFFICE" & _ Format(Val(Application.Version), "00") & _ "/EXP_PDF.DLL") <> "") End Function