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 Formatsla 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:=xlOpenXMLWorkbookpara 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.