Excel: cree varios archivos PDF basados ​​en una lista

Índice
  1. Guión
  2. macro VBA
  3. Adaptando el código a su escenario
  4. Probandolo

Hace poco estuve en una llamada en la que alguien me preguntó si era posible crear un PDF único para cada elemento de una lista. La respuesta es “Sí”, por eso en este post quiero mostrarte cómo hacerlo; cómo crear varios archivos PDF basados ​​en una lista en Excel.

Tabla de contenido
  • Guión
  • macro VBA
  • Adaptando el código a su escenario
  • Probandolo

Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.

Nombre del archivo: 0073 Guardar archivos PDF basados ​​en una lista.zip

Tener acceso

Guión

El escenario que estamos viendo es razonablemente sencillo, por lo que debería poder adaptarlo a sus circunstancias específicas.

En el archivo de ejemplo, queremos crear un informe de examen para cada estudiante según su número de identificación (ver captura de pantalla a continuación).

Cuando el valor de ID de estudiante en la celda G4 cambia, el informe se vuelve a calcular para devolver los resultados del estudiante seleccionado.

Informe de ejemplo: para crear archivos PDF

La celda G4 se basa en una lista de validación de datos, utilizando los valores que comienzan en la celda I4 .

Hay una forma denominada Guardar archivos PDF; asignaremos la macro a este botón más adelante.

Todo el informe se basa en datos contenidos en una tabla de Excel (ver captura de pantalla a continuación)

Tabla de datos para un informe de ejemplo: creación de archivos PDF a partir de una lista

He utilizado las funciones XLOOKUP , UNIQUE y FILTER para facilitar la demostración. Por lo tanto, el archivo de ejemplo solo funcionará correctamente si tiene una versión de Excel habilitada para matrices dinámicas (es decir, no funcionará en Excel 2019 y versiones anteriores). Sin embargo, no he utilizado ninguna funcionalidad de matriz dinámica en la macro de VBA. Debería poder adaptar el código, incluso si no tiene una versión de Excel habilitada para matrices dinámicas.

macro VBA

Inserte el siguiente código en un módulo de código estándar.

Sub SavePDFsFromList()'Declarar las variablesDim ws como WorksheetDim rngID As RangeDim rngListStart As RangeDim filasCount As LongDim i As LongDim pdfFilePath As StringDim tempPDFFilePath As String'Detener la actualización de la pantalla mientras se ejecutaApplication.ScreenUpdating = False'Reference Report SheetSet ws = ActiveWorkbook.Sheets( "Report")'Haga referencia al ID de estudiante cellSet rngID = ws.Range("G4")'Haga referencia al inicio de la ID de estudiante ListSet rngListStart = ws.Range("I4")'Cuente las filas en la ID de estudiante ListrowsCount = rngListStart .CurrentRegion.Rows.Count - 1'Crear el nombre del archivo PDFpdfFilePath = "C:Carpeta de pruebaPDF ExportStudent Exam Record - [ID].pdf"For i = 1 To rowsCount 'Cambiar el ID de estudiante actual rngID.Value = rngListStart.Offset( i - 1, 0).Value 'Reemplazar [ID] con el valor de ID del estudiante tempPDFFilePath = Reemplazar(pdfFilePath, "[ID]", rngID.Value) 'Crear el PDF ws.ExportAsFixedFormat Type:=xlTypePDF, _ fileName:= tempPDFFilePathNext Reinicio la pantalla actualizandoApplication.ScreenUpdating = TrueEnd Sub

Adaptando el código a su escenario

Hay demasiados escenarios en los que se podría aplicar este tipo de solución. Por lo tanto, deberá adaptar el código anterior para cumplir con sus requisitos específicos. Los elementos imprescindibles a cambiar son:

Establecer rngID = ws.Range(" G4 ")

La referencia de celda G4 debe cambiarse para que sea el parámetro que haga que cambie el informe.

Establecer rngListStart = ws.Range(" I4 ")

La referencia de celda I4 debe ser la primera celda en la lista de elementos para recorrer.

pdfFilePath = "C:Carpeta de pruebaPDF ExportRegistro de examen de estudiante - [ID] .pdf"

pdfFilePath debe contener una ruta de carpeta válida en su PC o red.

La cadena de [ID] identifica la referencia que debe reemplazarse dentro de la ruta del archivo PDF. Esta cadena de texto debe ser la misma en el código anterior y siguiente.

tempPDFFilePath = Reemplazar(pdfFilePath, " [ID] ", rngID.Value)

Probandolo

Ahora, asignemos la macro a la forma para que podamos probarla.

  • Haga clic derecho en la forma
  • Seleccione Asignar macro… en el menú
  • En el cuadro de diálogo Asignar macro , seleccione la macro
  • Haga clic en Aceptar

Asignar macro a botón

Ahora todo está configurado; probémoslo. Haga clic en el botón Guardar archivos PDF .

Guardamos todos los informes individuales de los estudiantes en unos segundos. Entonces, incluso si tuviera cientos, no debería tomar mucho tiempo.

Carpeta con archivos PDF guardados

Si desea profundizar en el tema de guardar archivos PDF con macros de VBA, consulte esta publicación: Guardar Excel como PDF con VBA .


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...