There are several reasons why bulk converting old Microsoft Office documents can be worthwhile. The new files are typically much smaller, present fewer security risks and are less likely to be blocked by default, either now or in the future.
When this macro is run, it will prompt for a FOLDER and will then convert all documents in that folder and all subfolders. For a large folder this may take some time. This code is for Microsoft Windows only.
Public Sub ConvertDocToDocx() Dim FSO, objFolder, objSubfolder, objFile, queue As Collection Dim fldr As FileDialog Dim strFolder As String Dim objWordApplication As New Word.Application Dim objWordDocument As Word.Document Dim strOldFileName As String Set fldr = Application.FileDialog(msoFileDialogFolderPicker) With fldr .Title = "Select a Folder" .AllowMultiSelect = False .InitialFileName = "C:\demo\" If .Show <> -1 Then Exit Sub strFolder = .SelectedItems(1) End With Set fldr = Nothing Set FSO = CreateObject("Scripting.FileSystemObject") ' magic to loop through subfolders Set queue = New Collection queue.Add FSO.GetFolder(strFolder) Do While queue.Count > 0 Set objFolder = queue(1) queue.Remove 1 'dequeue '...insert any per-folder processing code here... For Each objSubfolder In objFolder.SubFolders queue.Add objSubfolder 'enqueue Next objSubfolder For Each objFile In objFolder.Files If LCase(Right(objFile, 3)) = "doc" Then strOldFileName = objFile 'Open old file With objWordApplication Set objWordDocument = .Documents.Open(FileName:=strOldFileName, AddToRecentFiles:=False, ReadOnly:=False, Visible:=True) ' Save it With objWordDocument ' Save as docx or docm, depending on whether the file contains macros. ' and turn off compatibility mode If .HasVBProject = False Then .SaveAs2 FileName:=.FullName & "x", FileFormat:=wdFormatXMLDocument, CompatibilityMode:=15, AddToRecentFiles:=False Else .SaveAs2 FileName:=.FullName & "m", FileFormat:=wdFormatXMLDocumentMacroEnabled, CompatibilityMode:=15, AddToRecentFiles:=False End If 'close the document .Close False End With End With End If Next objFile Loop End Sub
Name | Value | Description |
---|---|---|
wdCurrent | 65535 | Compatibility mode equivalent to the latest version of Word. |
wdWord2003 | 11 | Word is put into a mode that is most compatible with Word 2003. Features new to Word are disabled in this mode. |
wdWord2007 | 12 | Word is put into a mode that is most compatible with Word 2007. Features new to Word are disabled in this mode. |
wdWord2010 | 14 | Word is put into a mode that is most compatible with Word 2010. Features new to Word are disabled in this mode. |
wdWord2013 | 15 | Default. All Word features are enabled. |
Related
KB922850 - A file type was blocked by your registry policy settings.
Convert Excel .xls to .xlsx Excel Spreadsheet Macro.