Note: The other languages of the website are Google-translated. Back to English

¿Cómo convertir por lotes varios documentos de Word a archivos pdf?

Es fácil para usted convertir un documento de Word en un archivo PDF con la función Guardar como en Word. Pero si desea convertir todos los documentos de Word en una carpeta en archivos PDF separados a la vez, ¿cómo puede lograrlo? Este artículo le mostrará un código VBA para convertir por lotes varios documentos de Word a archivos PDF en Word.

Convierta por lotes varios documentos de Word a archivos pdf con VBA
Convierta por lotes varios documentos de Word a archivos pdf con Kutools para Word


Convierta por lotes varios documentos de Word a archivos pdf con VBA

El siguiente código VBA lo ayuda a convertir rápidamente todos los documentos de Word en una carpeta a archivos PDF a la vez. Haz lo siguiente.

1. En Word, presione el otro + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. En el Microsoft Visual Basic para aplicaciones ventana, haga clic recuadro > Módulo, luego copie el código de VBA a continuación en la ventana del Módulo.

Código VBA: convierta por lotes varios documentos de Word a archivos pdf en Word

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20181123
    Dim xIndex As String
    Dim xDlg As FileDialog
    Dim xFolder As Variant
    Dim xNewName As String
    Dim xFileName As String
    Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
    If xDlg.Show <> -1 Then Exit Sub
    xFolder = xDlg.SelectedItems(1) + "\"
    xFileName = Dir(xFolder & "*.*", vbNormal)
    While xFileName <> ""
        If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
            xIndex = InStr(xFileName, ".") + 1
            xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
            Documents.Open FileName:=xFolder & xFileName, _
                ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
                PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
                WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
                wdOpenFormatAuto, XMLTransform:=""
            ActiveDocument.ExportAsFixedFormat OutputFileName:=xFolder & xNewName, _
                ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
                wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
                Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
                CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
                BitmapMissingFonts:=True, UseISO19005_1:=False
            ActiveDocument.Close
        End If
        xFileName = Dir()
    Wend
End Sub

3. presione el F5 clave para ejecutar el código.

4. Aparecerá un cuadro de diálogo Examinar, seleccione la carpeta que contiene los documentos de Word que convertirá a archivos pdf y haga clic en OK

Luego, todos los documentos de Word en la carpeta seleccionada se convierten en archivos PDF separados a la vez. Ver captura de pantalla:


Convierta por lotes varios documentos de Word a archivos pdf con Kutools para Word

Si el código VBA es difícil de manejar, puede probar el Convertir documentos utilidad de Kutools for Word para resolver el problema.

Kutools for Word : Con más de 100 útiles complementos de Word, libre de probar sin limitación en 60 días.

1. Hacer clic en Kutools Más > Doc / Docx. Ver captura de pantalla:

2. En el Convertidor de formato de documento ventana, debe hacer lo siguiente:

2.1) Seleccione la carpeta que contiene los documentos que convertirá a pdf en el Carpeta de archivo de origen sección;
2.2 Select Convertir docx a pdf de Formato Convertir la lista desplegable;
2.3) Por defecto, el Ruta de destino igual que la fuente la casilla está marcada. Si desea colocar todos los archivos PDF convertidos en la misma carpeta, mantenga esta opción seleccionada;
Si desea separar los archivos pdf y los documentos de origen, debe desmarcar la Ruta de destino igual que la fuente cuadro y seleccione una nueva carpeta para guardar los archivos PDF en el Guardar en... caja;
2.4) Haga clic en Comienzo botón. Ver captura de pantalla:

3. Luego aparece un cuadro de diálogo para indicarle cuántos documentos se han convertido correctamente, haga clic en el OK botón y cierre el Convertidor de formato de documento ventana.

Ahora todos los documentos en formato .docx se convierten a archivos pdf.

Si desea tener una prueba gratuita de esta utilidad, vaya a descarga gratis el software primero, y luego vaya a aplicar la operación según los pasos anteriores.


Herramientas de productividad de palabras recomendadas

 

Kutools para Word: más de 100 funciones avanzadas para Word, ahorre su 50% de tiempo

  • Las operaciones complicadas y repetidas se pueden realizar un solo procesamiento en segundos.
  • Inserte varias imágenes en carpetas en un documento de Word a la vez.
  • Fusiona y combina varios archivos de Word en carpetas en uno con el orden que desees.
  • Divida el documento actual en documentos separados según el encabezado, el salto de sección u otros criterios.
  • Convierta archivos entre Doc y Docx, Docx y PDF, colección de herramientas para conversiones y selección comunes, etc.
Comentarios (33)
5 clasificado de 5 · 3 calificaciones
Este comentario fue minimizado por el moderador en el sitio
Muy buen blog, gracias por compartir este blog. Tiene información tan útil para los usuarios. Me gustó mucho esta información.
Espero que sigas compartiendo este tipo de información, convierte word doc a html
Este comentario fue minimizado por el moderador en el sitio
VBA si trato de convertir un archivo que contiene macros, la macro cambia para abrir el archivo y termina sin cerrar el archivo.
Este comentario fue minimizado por el moderador en el sitio
¿Hay alguna forma de tomar el nombre del archivo del texto del documento?
Este comentario fue minimizado por el moderador en el sitio
Hola,


¿Hay alguna manera fácil de ajustar el código VBA para que los documentos se conviertan en archivos .txt?
Este comentario fue minimizado por el moderador en el sitio
Hola,

Recibo el error de tiempo de ejecución '424':
Objeto requerido

en el siguiente código

Documentos.Abrir nombre de archivo:=xFolder & xFileName, _

ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

DocumentoContraseña:="", PlantillaContraseña:="", Revertir:=Falso, _

WritePasswordDocument:="", WritePasswordTemplate:="", Formato:= _

wdOpenFormatAuto, XMLTransform:=""


wdOpenFormatAuto = 0 dice.

Por favor, ayuda.

Gracias.
Este comentario fue minimizado por el moderador en el sitio
Hola,



Recibo el error de tiempo de ejecución '424':

Objeto requerido


imagen adjunta.




Por favor, ayuda.



Gracias.
Este comentario fue minimizado por el moderador en el sitio
Hola, muchas gracias por este código. Está funcionando bien, sin embargo, aparece un cuadro de diálogo después de cada conversión para guardar el documento de Word y tengo que guardar. ¿Puede incluir código en la macro para que guarde y cierre el archivo en lugar de tener que cerrar cada uno?
Este comentario fue minimizado por el moderador en el sitio
si agrega "ActiveDocument.Save" justo encima de "ActiveDocument.Close", guardará el documento antes de cerrarse para que no tenga que presionar siempre el indicador de guardar.
Este comentario fue minimizado por el moderador en el sitio
gracias por el código vba, ayuda mucho.
Este comentario fue minimizado por el moderador en el sitio
El código VBA es genial. Saludos, comió
Este comentario fue minimizado por el moderador en el sitio
Cambiar xIndex = InStr(xFileName, ".") + 1


Este comentario fue minimizado por el moderador en el sitio
Si cambias
xÍndice = InStr(xNombreArchivo, ".") + 1 a
xÍndice = InStrRev(xNombreArchivo, ".") + 1
buscará desde el final de la cadena para encontrar el primer punto. Esto evitará problemas cuando el nombre del archivo contenga puntos.
Este comentario fue minimizado por el moderador en el sitio
Спасибо, очень дельный совет
Este comentario fue minimizado por el moderador en el sitio
Si cambiaxFileName = Dir(xFolder & "*.*", vbNormal)
a xFileName = Dir(xFolder & "*.doc*", vbNormal) la macro no fallará cuando haya archivos que no sean de Word en la misma carpeta.
Este comentario fue minimizado por el moderador en el sitio
Esto salvó mi día, ¡muchas gracias!
Solo me gustaría señalar a las personas que usan esto, si Word parece congelarse, solo espere, está generando los archivos .pdf. Mi Word se congeló, pero abrí la carpeta de los archivos y pude ver que efectivamente estaba generando el .pdf para todos los archivos.
Este comentario fue minimizado por el moderador en el sitio
VBA 很棒!!感謝您的分享。
Este comentario fue minimizado por el moderador en el sitio
Tengo un problema si documet tiene el nombre 1.2.3.5.Blabla bla.doc guarda y reescribe archivos PDF y en conclusión solo tengo 0ne? último documento. ¿Cómo puedo solucionar este problema?
Este comentario fue minimizado por el moderador en el sitio
Si cambias
xÍndice = InStr(xNombreArchivo, ".") + 1
a
xÍndice = InStrRev(xNombreArchivo, ".") + 1
buscará desde el final de la cadena para encontrar el primer punto. Esto evitará problemas cuando el nombre del archivo contenga puntos.

Si cambias
xNombreArchivo = Dir(xCarpeta & "*.*", vbNormal)
a
xNombreArchivo = Dir(xFolder & "*.doc*", vbNormal)
la macro no fallará cuando haya archivos que no sean de Word en la misma carpeta.
Este comentario fue minimizado por el moderador en el sitio
Макрос работает некорректно, если в именах файлов есть точки
Este comentario fue minimizado por el moderador en el sitio
Si cambias
xÍndice = InStr(xNombreArchivo, ".") + 1
a
xÍndice = InStrRev(xNombreArchivo, ".") + 1
buscará desde el final de la cadena para encontrar el primer punto. Esto evitará problemas cuando el nombre del archivo contenga puntos.
Este comentario fue minimizado por el moderador en el sitio
Si cambias
xÍndice = InStr(xNombreArchivo, ".") + 1
a
xÍndice = InStrRev(xNombreArchivo, ".") + 1
buscará desde el final de la cadena para encontrar el primer punto. Esto evitará problemas cuando el nombre del archivo contenga puntos.

Si cambias
xNombreArchivo = Dir(xCarpeta & "*.*", vbNormal)
a
xNombreArchivo = Dir(xFolder & "*.doc*", vbNormal)
la macro no fallará cuando haya archivos que no sean de Word en la misma carpeta.
Este comentario fue minimizado por el moderador en el sitio
¡Muchas gracias! ¡Me ahorró tanto tiempo!
Este comentario fue minimizado por el moderador en el sitio
Вот тут во втором условии надо 4 заменить на 5:
Si ((Derecha(xFileName, 4)) <> ".doc" O Derecha(xFileName, 5) <> ".docx") Entonces
Для исключения проблемы наличия точек можно сделать так:
xIndex = InStr(xNombreArchivo, ".doc") + 1
Ну и про советы других товарищей не забыть ;)

Este comentario fue minimizado por el moderador en el sitio
Este código es sorprendente y rápido, pero si hay un enlace en el archivo Doc, se abrirá una ventana que indica que puede haber información vinculada a otro archivo. ¿Aplicar estos cambios? y luego otro pidiendo guardar como. ¿Hay alguna manera de agregar al código para hacer estos pasos automáticamente por mí? De ~ 800 hay ~ 40 y debo estar presente y hacer esto cada vez.
gracias
5 clasificado de 5
Este comentario fue minimizado por el moderador en el sitio
Hola Vicente,
El siguiente código de VBA puede hacerte un favor. Por favor inténtalo. Gracias por tus comentarios.

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20220805
  Dim xIndex As String
  Dim xDlg As FileDialog
  Dim xFolder As Variant
  Dim xNewName As String
  Dim xFileName As String
  On Error Resume Next
  Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
  If xDlg.Show <> -1 Then Exit Sub
  xFolder = xDlg.SelectedItems(1) + "\"
  xFileName = Dir(xFolder & "*.*", vbNormal)
  Application.DisplayAlerts = wdAlertsNone
  While xFileName <> ""
      If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
          xIndex = InStr(xFileName, ".") + 1
          xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
          Documents.Open FileName:=xFolder & xFileName, _
              ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
              PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
              WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
              wdOpenFormatAuto, XMLTransform:=""
          ActiveDocument.ExportAsFixedFormat OutputFileName:=xFolder & xNewName, _
              ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
              wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
              Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
              CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
              BitmapMissingFonts:=True, UseISO19005_1:=False
          ActiveDocument.Close wdSaveChanges
      End If
      xFileName = Dir()
  Wend
  Application.DisplayAlerts = wdAlertsAll
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿hay alguna manera de seleccionar una carpeta de salida diferente y no la carpeta original?

gracias
Este comentario fue minimizado por el moderador en el sitio
Hola Vicente,
Intente con el siguiente código VBA. Después de ejecutar el código, un Abierta aparece una ventana emergente, seleccione una carpeta que contenga los documentos que desea convertir, en la segunda ventana emergente Guardar archivos PDF en ventana, seleccione una carpeta para guardar los archivos PDF.

Sub ConvertWordsToPdfs()
'Updated by Extendoffice 20220805
  Dim xIndex As String
  Dim xDlg As FileDialog, xSaveDlg As FileDialog
  Dim xFolder As Variant, xSaveFolder As Variant
  Dim xNewName As String
  Dim xFileName As String
  On Error Resume Next
  Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
  xDlg.Title = "Open"
  xDlg.ButtonName = "Open"
  If xDlg.Show <> -1 Then Exit Sub
  xFolder = xDlg.SelectedItems(1) + "\"
  xFileName = Dir(xFolder & "*.*", vbNormal)
  Set xSaveDlg = Application.FileDialog(msoFileDialogFolderPicker)
  xSaveDlg.Title = "Save PDF files in"
  xSaveDlg.ButtonName = "Save"
  If xSaveDlg.Show <> -1 Then Exit Sub
  xSaveFolder = xSaveDlg.SelectedItems(1) + "\"
  Application.DisplayAlerts = wdAlertsNone
  While xFileName <> ""
      If ((Right(xFileName, 4)) <> ".doc" Or Right(xFileName, 4) <> ".docx") Then
          xIndex = InStr(xFileName, ".") + 1
          xNewName = Replace(xFileName, Mid(xFileName, xIndex), "pdf")
          Documents.Open FileName:=xFolder & xFileName, _
              ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
              PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
              WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
              wdOpenFormatAuto, XMLTransform:=""
          ActiveDocument.ExportAsFixedFormat OutputFileName:=xSaveFolder & xNewName, _
              ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
              wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
              Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
              CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
              BitmapMissingFonts:=True, UseISO19005_1:=False
          ActiveDocument.Close wdSaveChanges
      End If
      xFileName = Dir()
  Wend
  Application.DisplayAlerts = wdAlertsAll
  Set xDlg = Nothing
  Set xSaveDlg = Nothing
End Sub
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL