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