Convertir .doc a .docx masivamente

      Comentarios desactivados en Convertir .doc a .docx masivamente

Translate

Existe una problemática común en muchas empresas desde el cambio de formato de Microsoft Office, si, de eso ya hace más de 10 años, pero en muchas empresas todavía trabajan con el formato antiguo, .doc, .xls, .ppt y a día de hoy este formato es lento y ocupa mucho más que el actual. El objetivo es transformar esos miles de documentos del antiguo formato al nuevo, sin tener que realizar esta tarea de manera manual.

Después de dar vueltas a distintos programas de conversión, he visto que todos aquellos que no usan librerías de Microsoft, lo que hacen es una adaptación, es decir transforman el documento, pero combinan cosas del formato, supongo porque usaran librerías de software libre.

Como esto no es aceptable para documentos formateados con logos, separadores, tablas y demás contenido, la mejor manera que he encontrado es que el propio Microsoft Office haga esa conversión.

En mi caso, me he decantado por Visual Basic for Applications, es decir, las macros de toda la vida y usando un código ya creado y compartido de ExtendOffice , lo he modificado para cubrir algunas necesidades.

https://www.extendoffice.com/documents/word/5601-word-batch-convert-doc-to-docx.html#a1

Si veis el código, lo único que hace es abrir todos los documentos .doc dentro del directorio que nosotros le indicamos y los duplica convertidos a .docx.

En el servidor de ficheros de una empresa, no tendremos 4 o 5 carpetas con documentos, sino que tendremos miles de carpetas, subcarpetas hasta llegar al infinito… por lo que mi modificación lo único que hace es convertir, también los documentos de todas las subcarpetas que encuentra en la carpeta seleccionada.

Proceso para convertir .doc a .docx

NOTA. Antes de realizar este proceso es imprescindible tener una copia de seguridad de todos los ficheros, sobre los que actuareis, más vale prevenir que llorar.

Lo primero que debemos hacer es abrir un archivo Word y una vez dentro pulsamos Alt+F11.

Una vez dentro del editor de VBA, insertaremos un Módulo y pegaremos el código.

Public Sub empieza()

Dim FileSystem As Object
Set FileSystem = CreateObject("Scripting.FileSystemObject")

'Ventana para seleccionar Carpeta a convertir
'-------------------------------------------------
Dim xDlg As FileDialog
Application.ScreenUpdating = False
Set xDlg = Application.FileDialog(msoFileDialogFolderPicker)
If xDlg.Show <> -1 Then Exit Sub
'MsgBox xDlg.SelectedItems(1)
'-------------------------------------------------

'Llamada a la función de convertir enviando la ruta seleccionada
'-------------------------------------------------
Set fld = FileSystem.GetFolder(xDlg.SelectedItems(1))
'MsgBox fld
Call ConvertDOCX(fld)

'-------------------------------------------------
End Sub

Public Sub ConvertDOCX(Folder)
Dim objFSO
Dim objFolderCollection
Dim xFolder As Variant
Dim xFileName As String
Dim SubFolder
Dim File

For Each SubFolder In Folder.SubFolders
    ConvertDOCX SubFolder
Next

For Each File In Folder.Files
    If Right(File, Len(File) - InStrRev(File, ".")) = "doc" And Left(Right(File, Len(File) - InStrRev(File, "\")), 2) <> "~$" Then
    xFileName = Right(File, Len(File) - InStrRev(File, "\"))
    xFolder = Folder + "\"
    'MsgBox xFolder + " - " + xFileName
    Documents.Open FileName:=xFolder & xFileName, _
        ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
        wdOpenFormatAuto, XMLTransform:="", OpenAndRepair:=True, NoEncodingDialog:=True
    ActiveDocument.SaveAs Replace(File, "doc", "docx"), wdFormatDocumentDefault
    ActiveDocument.Close
    'MsgBox xFolder + xFileName
    'MsgBox File
    Kill File
    End If
Next
End Sub

Ahora podemos Ejecutar el código desde la barra de tareas “Ejecutar” o pulsando F5.

Este proceso lo que hará es abrir cada documento .doc, guardarlo como .docx y eliminar el documento original.

Ejecutar Macro desde Word

Si no queréis realizar el proceso de copiar el código a VBA y lanzar el proyecto desde esa consola, podéis descargar este fichero y descomprimir el .docm.

ConvertDOCX

Una vez abierto tenéis que permitir las Macros y desde la pestaña de Vista, podéis abrir las Macros y lanzar la herramienta.