Convertir manualmente una gran cantidad de documentos de Word a PDF uno por uno es tedioso y consume tiempo. Puede automatizar esta tarea con una macro de VBA que procese todos los archivos de una carpeta a la vez. Este artículo explica cómo escribir y ejecutar un script de VBA en Word que convierta todos los archivos .docx de una carpeta de origen a PDF en una carpeta de destino. Al final, tendrá una macro reutilizable que le ahorrará horas de trabajo manual.
Puntos clave: Conversión por lotes a PDF con VBA en Word
- Alt+F11 para abrir el editor de VBA: Acceda al entorno de Visual Basic for Applications para escribir su macro.
- FileDialog(msoFileDialogFolderPicker): Permite al usuario seleccionar la carpeta de origen que contiene los documentos de Word.
- CreateObject(“Word.Application”): Abre una instancia oculta de Word para procesar archivos sin interrumpir su sesión actual.
- Document.ExportAsFixedFormat con wdExportFormatPDF: Convierte cada documento a PDF en la carpeta de destino.
Entender la función de conversión por lotes de VBA
VBA (Visual Basic for Applications) es un lenguaje de programación integrado en las aplicaciones de Microsoft Office. Con VBA, puede automatizar tareas repetitivas como convertir varios documentos de Word a PDF. La macro se ejecuta dentro de Word y puede abrir, modificar y exportar documentos sin interacción del usuario. Antes de escribir la macro, asegúrese de que su instalación de Word incluya compatibilidad con VBA, que está habilitada de forma predeterminada en todas las versiones de escritorio de Word. No necesita ningún software de terceros. La macro utiliza el método ExportAsFixedFormat, que produce archivos PDF de alta calidad idénticos al proceso manual Archivo > Guardar como > PDF. El script recorre todos los archivos .docx de una carpeta seleccionada, abre cada uno, lo exporta como PDF y lo cierra. Puede ajustar la carpeta de destino dentro de la macro o dejar que el script guarde los PDF en una subcarpeta llamada “PDF” dentro de la carpeta de origen.
Pasos para crear y ejecutar la macro de conversión por lotes a PDF
Siga estos pasos para escribir, guardar y ejecutar la macro de VBA. La macro le solicita seleccionar una carpeta y luego convierte cada archivo .docx de esa carpeta a PDF. Los archivos PDF se guardan en una subcarpeta llamada “PDF” dentro de la carpeta de origen. Si la subcarpeta no existe, la macro la crea automáticamente.
- Abra el editor de VBA
En Word, presione Alt+F11 para abrir el editor de Visual Basic for Applications. Si no ve la ventana Explorador de proyectos, vaya a Ver > Explorador de proyectos. - Inserte un nuevo módulo
En el Explorador de proyectos, haga clic con el botón derecho en Normal o en el nombre de su documento y elija Insertar > Módulo. Aparece una ventana de código en blanco. - Pegue el código de la macro
Copie y pegue el siguiente código en la ventana del módulo:Sub BatchConvertToPDF() Dim fd As FileDialog Dim sourceFolder As String Dim fileName As String Dim doc As Document Dim pdfFolder As String Dim wordApp As Word.Application Set fd = Application.FileDialog(msoFileDialogFolderPicker) fd.Title = "Select folder containing Word documents" If fd.Show = -1 Then sourceFolder = fd.SelectedItems(1) Else MsgBox "No folder selected. Exiting macro.", vbExclamation, "Canceled" Exit Sub End If ' Ensure folder path ends with backslash If Right(sourceFolder, 1) <> "\" Then sourceFolder = sourceFolder & "\" ' Create PDF output subfolder pdfFolder = sourceFolder & "PDF\" If Dir(pdfFolder, vbDirectory) = "" Then MkDir pdfFolder End If ' Get first .docx file fileName = Dir(sourceFolder & "docx") ' Create a hidden Word application instance Set wordApp = New Word.Application wordApp.Visible = False wordApp.DisplayAlerts = wdAlertsNone Do While fileName <> "" Set doc = wordApp.Documents.Open(sourceFolder & fileName) ' Convert to PDF doc.ExportAsFixedFormat _ OutputFileName:=pdfFolder & Replace(fileName, ".docx", ".pdf"), _ ExportFormat:=wdExportFormatPDF, _ OpenAfterExport:=False, _ OptimizeFor:=wdExportOptimizeForPrint, _ Range:=wdExportAllDocument doc.Close SaveChanges:=False fileName = Dir() ' Next file Loop wordApp.Quit Set wordApp = Nothing MsgBox "Conversion complete. PDF files saved in: " & vbCrLf & pdfFolder, vbInformation, "Done" End Sub - Ejecute la macro
Presione F5 mientras el cursor está dentro del código de la macro, o vaya a la cinta de opciones de Word y haga clic en Ver > Macros, seleccione BatchConvertToPDF y haga clic en Ejecutar. Aparece un cuadro de diálogo para seleccionar carpeta. Navegue hasta la carpeta que contiene sus archivos .docx y haga clic en Aceptar. - Espere a que finalice
La macro procesa cada archivo de forma silenciosa. Aparece un cuadro de mensaje cuando finalizan todas las conversiones. Abra la subcarpeta “PDF” dentro de la carpeta de origen para ver los archivos PDF generados.
Problemas comunes y cómo evitarlos
“Error de compilación: Tipo definido por el usuario no definido”
Este error se produce si el editor de VBA no tiene una referencia a la biblioteca de objetos de Word. En el editor de VBA, vaya a Herramientas > Referencias y asegúrese de que Microsoft Word 16.0 Object Library (o su versión) esté marcada. Haga clic en Aceptar y ejecute la macro de nuevo.
La macro convierte solo unos pocos archivos y se detiene
Si Word encuentra un documento dañado, la macro puede detenerse. Para controlar los errores, agregue la línea On Error Resume Next justo después de Do While fileName <> "". Esto hace que la macro omita los archivos problemáticos y continúe con el resto. Agregue un contador para registrar los archivos omitidos si es necesario.
Los PDF se guardan en la ubicación incorrecta
La macro crea una subcarpeta llamada “PDF” dentro de la carpeta de origen. Si prefiere un destino diferente, cambie la línea pdfFolder = sourceFolder & "PDF\" por una ruta fija como pdfFolder = "C:\MyPDFs\". Asegúrese de que la carpeta exista o agregue un comando MkDir para la ruta personalizada.
La macro no aparece en la lista de macros
La macro debe guardarse en la plantilla Normal.dotm o en el documento activo. Si pegó el código en un módulo dentro del documento activo, la macro solo se ejecuta cuando ese documento está abierto. Para que la macro esté siempre disponible, pegue el código en el proyecto Normal (en Normal > Módulos).
Conversión manual vs macro de VBA: diferencias clave
| Elemento | Conversión manual | Macro de VBA |
|---|---|---|
| Tiempo para 50 documentos | Aproximadamente 90 minutos | Menos de 5 minutos |
| Interacción del usuario requerida | Abrir cada archivo, hacer clic en Guardar como, seleccionar PDF, confirmar | Seleccionar la carpeta una vez, la macro se encarga del resto |
| Manejo de errores | Detección manual de archivos dañados | Puede omitir archivos dañados automáticamente |
| Control de la carpeta de salida | Debe elegir la carpeta cada vez | Subcarpeta fija o dinámica |
| Nivel de habilidad requerido | Conocimientos básicos de Word | Conocimientos básicos de VBA para crear la macro |
Ahora puede convertir cientos de documentos de Word a PDF con un solo clic usando la macro de VBA. Para ampliar la macro, agregue un segundo bucle que procese archivos .doc cambiando "docx" por "doc" y agregando una llamada Dir independiente. Para usuarios avanzados, modifiquen los parámetros ExportAsFixedFormat para establecer opciones de seguridad del PDF o reducir el tamaño del archivo usando wdExportOptimizeForScreen en lugar de wdExportOptimizeForPrint.