Respuestas:
Echa un vistazo a Office Migration Planning Manager.
El kit de herramientas también contiene el convertidor de archivos de Office (OFC), que permite conversiones de documentos en masa de binario a formatos OpenXML. ( Technet )
Descripción general en Technet
Tenga en cuenta que también necesitará Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
la OFC para funcionar.
Ambas herramientas ya no parecen ser compatibles.
Recomiendo usar una macro para procesar los archivos dentro de una carpeta para convertirlos de xls a xlsx. Este código supone que todos los archivos están ubicados dentro de una carpeta y que todos los archivos xls deben convertirse, pero si desea seleccionar archivos individuales, este código podría actualizarse.
Este código debería ejecutarse desde un libro de Excel 2007 o superior.
Option Explicit
' Convert all xls files in selected folder to xlsx
Public Sub convertXLStoXLSX()
Dim FSO As Scripting.FileSystemObject
Dim strConversionPath As String
Dim fFile As File
Dim fFolder As Folder
Dim wkbConvert As Workbook
' Open dialog and select folder
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Show
On Error Resume Next ' Prevent debug mode if user cancels selection
strConversionPath = .SelectedItems(1)
On Error GoTo 0 ' Re-enable default error handling
End With
Set FSO = New Scripting.FileSystemObject
' Check if the folder exists
If FSO.FolderExists(strConversionPath) Then
Set fFolder = FSO.GetFolder(strConversionPath)
' Disable confirmation dialogs (to prevent "unsaved changes" dialog popping up)
' and screen updates (to speed up conversion)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
' Loop through files, find the .xls files
For Each fFile In fFolder.Files
If LCase$(Right(fFile.Name, 4)) = ".xls" Then
' Open temporary workbook
Set wkbConvert = Workbooks.Open(fFile.Path)
' Save as OpenXML workbook - if your .xls files contain macros
' then change to FileFormat:=xlOpenXMLWorkbookMacroEnabled
wkbConvert.SaveAs FSO.BuildPath(fFile.ParentFolder, _
Left(fFile.Name, Len(fFile.Name) - 4)) & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook
wkbConvert.Close SaveChanges:=False
' Delete original file
fFile.Delete Force:=True
End If
Next fFile
' Re-enable confirmation dialogs and screen updates
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End Sub
Nota: Si los archivos que está convirtiendo contienen macros, entonces necesitará actualizar el
FileFormat:=xlOpenXMLWorkbook
para leerFileFormat:=xlOpenXMLWorkbookMacroEnabled
. O si no necesita el código de macro en los archivos convertidos, puede dejarlo solo y eliminará las macros cuando lo convierta al formato xlsx.
Sub SaveAllAsXLSX () Dim str Nombre de archivo como cadena Dim strDocName como cadena Dim strPath como cadena Dim wbk As Workbook Dim fDialog As FileDialog Dim intPos como entero Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB como cadena Dim colFiles como nueva colección Dim vFile como variante Establecer fDialog = Application.FileDialog (msoFileDialogFolderPicker) Con fDialog .Title = "Seleccione la carpeta y haga clic en Aceptar" .AllowMultiSelect = True .InitialView = msoFileDialogViewList Si .Mostrar -1 Entonces MsgBox "Cancelado por el usuario", "Listar el contenido de la carpeta" Salir Sub Terminara si strPath = fDialog.SelectedItems.Item (1) Si es correcto (strPath, 1) "\" Entonces strPath = strPath + "\" Terminar con If Left (strPath, 1) = Chr (34) Entonces strPath = Mid (strPath, 2, Len (strPath) - 2) Terminara si Establecer obj = CreateObject ("Scripting.FileSystemObject") RecursiveDir colFiles, strPath, "* .xls", True Para cada vFile en colFiles Debug.Print vFile strFilename = vFile varA = Derecha (strFilename, 3) If (varA = "xls" O varA = "XLSX") Entonces Establecer wbk = Workbooks.Open (Nombre de archivo: = strFilename) Si wbk.HasVBProject entonces wbk.SaveAs Filename: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled Más wbk.SaveAs Filename: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook Terminara si wbk.Close SaveChanges: = False obj.DeleteFile (strFilename) Terminara si Siguiente vFile End Sub Public Function RecursiveDir (colFiles As Collection, _ strFolder As String, _ strFileSpec como cadena, _ bIncludeSubfolders As Boolean) Dim strTemp As String Dim colFolders como nueva colección Dim vFolderName como variante 'Agregar archivos en strFolder haciendo coincidir strFileSpec con colFiles strFolder = TrailingSlash (strFolder) strTemp = Dir (strFolder y strFileSpec) Do While strTemp vbNullString colFiles.Agregar strFolder y strTemp strTemp = Dir Lazo Si bIncludeSubfolders Entonces 'Rellenar colFolders con la lista de subdirectorios de strFolder strTemp = Dir (strFolder, vbDirectory) Do While strTemp vbNullString If (strTemp ".") Y (strTemp "..") Entonces If (GetAttr (strFolder & strTemp) y vbDirectory) 0 Entonces colFolders.Add strTemp Terminara si Terminara si strTemp = Dir Lazo 'Llame a RecursiveDir para cada subcarpeta en colFolders Para cada vFolderName en colFolders Call RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True) Siguiente vFolderName Terminara si Función final Función pública TrailingSlash (strFolder como cadena) como cadena Si Len (strFolder)> 0 entonces If Right (strFolder, 1) = "\" Entonces TrailingSlash = strFolder Más TrailingSlash = strFolder & "\" Terminara si Terminara si Función final
Si tiene instalado MsOffice, entonces vale la pena descargar esta herramienta para una solución rápida.
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
Cuando seleccione una carpeta para ver los archivos xls convertidos, asegúrese de marcar la opción de herramienta de conversión que usa MS Office para la conversión, no su propio convertidor.
Si usa su propio convertidor, perderá colores en las celdas y parece que sale una sola hoja. Si usa MsOffice como el convertidor parece funcionar bien. Buena herramienta para una solución rápida.
Así que escribí un simple VBScript para convertir archivos .xls a .xlsx de manera silenciosa.
./convert-xls-xlsx.vbs {ruta a la carpeta que contiene archivos .xls}
convert-xls-xlsx.vbs:
Establecer args = WScript. Argumentos strPath = args (0) strPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (strPath) Establecer objExcel = CreateObject ("Excel.Application") objExcel.Visible = False objExcel.DisplayAlerts = False Establecer objFso = CreateObject ("Scripting.FileSystemObject") Establecer objFolder = objFso.GetFolder (strPath) Para cada objFile en objFolder.Files fileName = objFile.Path If (objFso.GetExtensionName (objFile.Path) = "xls") Entonces Establecer objWorkbook = objExcel.Workbooks.Open (fileName) saveFileName = Reemplazar (fileName, ". xls", ". xlsx") objWorkbook.SaveAs saveFileName, 51 objWorkbook.Close () objExcel.Application.DisplayAlerts = True Terminara si próximo MsgBox "Conversión finalizada"
NOTA: Busque espacios en la ruta de la carpeta, si su ruta tiene un espacio intermedio, ponga la ruta entre comillas.