Ícono del sitio Formulas Excel

Macro Excel para PDF de varias hojas

Ahora veremos algo ideal para formatos y reportes contables a partir de hojas de calculo, ya vimos como crear PDF con Macros Excel, esto tiene cosas interesantes, se trata de una Macro Excel para PDF de varias hojas.

Como ya dije, es similar a Crear PDF con Macros, pero ahora la idea es que se pueda generar un solo archivo pdf que contenga mas de una hoja de calculo, de hecho podemos elegir cuales hojas se incluirán en el PDF.

Vídeo Tutorial para crear una macro que genere un archivo PDF que contenga varias hojas de calculo

Definición de Variables

Las variables son de mucha importancia, así que no hay que tomar esto a la ligera, ademas, ayudan a trabajar mejor.

Dim NombreArchivo As String
Dim RutaArchivo As String
Dim hojas() As Variant
Dim fila As Integer
Dim r As Range

Dar valor a las variables

La definición de variables es vital, pero de que sirve si no se les da valor, por lo tanto lo hacemos a continuación.

NombreArchivo = "Reporte"
RutaArchivo = ThisWorkbook.Path & "\" & NombreArchivo
'poblar array de hojas para el pdf
hojas = Array("Rep1", "Rep2", "Rep3", "Rep4")

Seleccionar todas las hojas del array

El array con los nombre de hojas facilitara mucho el proceso, con esta simple línea seleccionamos todas esas hojas.

'seleccionar todas las hojas del array
ThisWorkbook.Sheets(hojas).Select

Generar el PDF de todas las hojas seleccionadas

En la siguiente linea se resume todo, al final de cuentas buscamos generar un PDF, pues es lo que hace precisamente, por lo tanto es la línea mas importante.

'generar pdf de las hojas seleccionadas
ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo

Desactivar la selección múltiple

Después de eso hay que desactivar la selección múltiple, recuerda que en uno de las líneas hemos seleccionado mas de una.

ThisWorkbook.Sheets(1).Select

Código completo de la macro que genera un solo pdf de varias hojas de calculo.

Sub CreaUnPdfHojas()
    Dim NombreArchivo As String
    Dim RutaArchivo As String
    Dim hojas() As Variant
    Dim fila As Integer
    Dim r As Range

    NombreArchivo = "Reporte"
    RutaArchivo = ThisWorkbook.Path & "\" & NombreArchivo
    'poblar array de hojas para el pdf
    hojas = Array("Rep1", "Rep2", "Rep3", "Rep4")
    'seleccionar todas las hojas del array
    ThisWorkbook.Sheets(hojas).Select
    'generar pdf de las hojas seleccionadas
    ThisWorkbook.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=RutaArchivo

    ThisWorkbook.Sheets(1).Select
End Sub

Alternativa para los casos donde los nombres de hoja están en una lista

Sabemos que hay múltiples formas de hacer una cosa, por lo tanto buscamos las que mejor se adapte a lo que queremos, como la lista de hojas por ejemplo.

En lugar de la linea siguiente

hojas = Array("Rep1", "Rep2", "Rep3", "Rep4")

Se puede usar esta otra

fila = 0 'posición del array donde se inicia
For Each r In Hoja1.Range("A1", Hoja1.Range("A1").End(xlDown))
    ReDim Preserve hojas(0 To fila)
    hojas(fila) = r.Value
    fila = fila + 1
Next r

conclusiones

Como ya viste, la Macro Excel para PDF de varias hojas de calculo es muy practica, por ejemplo, el código es corto y sencillo, pero después de todo lo importante es que comprendas los conceptos usados, además, esto te puede ayudar en otros proyectos, sobre todo lo relacionado con los arrays y los ciclos, por ejemplo el ciclo For Each, que es muy útil para recorrer objetos.
Descargar Macro Crea un PDF de varias hoja de calculo

Salir de la versión móvil