Réponses:
Consultez Office Migration Planning Manager.
La boîte à outils contient également le convertisseur de fichiers Office (OFC), qui permet des conversions de documents en masse des formats binaires aux formats OpenXML. ( Technet )
Notez que vous aurez également besoin du Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
pour que l'OFC fonctionne.
Les deux outils ne semblent plus vraiment être pris en charge.
Je recommande d'utiliser une macro pour traiter les fichiers d'un dossier afin de les convertir de xls en xlsx. Ce code suppose que les fichiers sont tous situés dans un dossier et que tous les fichiers xls doivent être convertis, mais si vous souhaitez sélectionner des fichiers individuels, ce code peut être mis à jour.
Ce code devrait être exécuté à partir d'un classeur Excel 2007 ou supérieur.
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
Remarque: Si les fichiers que vous convertissez contiennent des macros, vous devrez mettre à jour le
FileFormat:=xlOpenXMLWorkbook
pour lireFileFormat:=xlOpenXMLWorkbookMacroEnabled
. Ou si vous n'avez pas besoin du code de macro dans les fichiers convertis, vous pouvez le laisser seul et il supprimera les macros lorsqu'il le convertira au format xlsx.
Sub SaveAllAsXLSX () Dim strFilename As String Dim strDocName As String Dim strPath As String Dim wbk As Workbook Dim fDialog As FileDialog Dim intPos As Integer Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB As String Dim colFiles comme nouvelle collection Dim vFile As Variant Définissez fDialog = Application.FileDialog (msoFileDialogFolderPicker) Avec fDialog .Title = "Sélectionnez le dossier et cliquez sur OK" .AllowMultiSelect = True .InitialView = msoFileDialogViewList Si .Afficher -1 Alors MsgBox "Annulé par l'utilisateur",, "Liste du contenu du dossier" Quitter sous Fin si strPath = fDialog.SelectedItems.Item (1) If Right (strPath, 1) "\" Then strPath = strPath + "\" Terminer par Si Left (strPath, 1) = Chr (34) Then strPath = Mid (strPath, 2, Len (strPath) - 2) Fin si Set obj = CreateObject ("Scripting.FileSystemObject") RecursiveDir colFiles, strPath, "* .xls", True Pour chaque vFile dans colFiles Debug.Print vFile strFilename = vFile varA = Right (strFilename, 3) Si (varA = "xls" Ou varA = "XLSX") Alors Définissez wbk = Workbooks.Open (Filename: = strFilename) Si wbk.HasVBProject Alors wbk.SaveAs Filename: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled Autre wbk.SaveAs Filename: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook Fin si wbk.Close SaveChanges: = False obj.DeleteFile (strFilename) Fin si VFile suivant End Sub Fonction publique RecursiveDir (colFiles As Collection, _ strFolder As String, _ strFileSpec As String, _ bIncludeSubfolders As Boolean) Dim strTemp As String Dim colFolders comme nouvelle collection Dim vFolderName As Variant 'Ajouter des fichiers dans strFolder correspondant à strFileSpec à colFiles strFolder = TrailingSlash (strFolder) strTemp = Dir (strFolder & strFileSpec) Faire pendant que strTemp vbNullString colFiles.Add strFolder & strTemp strTemp = Dir Boucle Si bIncludeSubfolders Then 'Remplissez colFolders avec la liste des sous-répertoires de strFolder strTemp = Dir (strFolder, vbDirectory) Faire pendant que strTemp vbNullString Si (strTemp ".") Et (strTemp "..") Alors If (GetAttr (strFolder & strTemp) Et vbDirectory) 0 Then colFolders.Add strTemp Fin si Fin si strTemp = Dir Boucle 'Appelez RecursiveDir pour chaque sous-dossier dans colFolders Pour chaque vFolderName dans colFolders Appel RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True) VFolderName suivant Fin si Fonction de fin Fonction publique TrailingSlash (strFolder As String) As String Si Len (strFolder)> 0 Then If Right (strFolder, 1) = "\" Then TrailingSlash = strFolder Autre TrailingSlash = strFolder & "\" Fin si Fin si Fonction de fin
Si vous avez installé MsOffice, cet outil peut valoir la peine d'être téléchargé pour une solution rapide.
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
Lorsque vous sélectionnez un dossier pour voir les fichiers xls convertis, assurez-vous de cocher l'option d'outil de conversion qui utilise MS Office pour la conversion, pas leur propre convertisseur.
Si vous utilisez leur propre convertisseur, vous perdrez des couleurs dans les cellules et une seule feuille semble sortir. Si vous utilisez MsOffice, le convertisseur semble fonctionner correctement. Bon outil pour une solution rapide.
J'ai donc écrit un simple VBScript pour convertir les fichiers .xls en .xlsx de manière silencieuse.
./convert-xls-xlsx.vbs {chemin vers le dossier contenant les fichiers .xls}
convert-xls-xlsx.vbs:
Définissez args = WScript.Arguments strPath = args (0) strPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (strPath) Définir objExcel = CreateObject ("Excel.Application") objExcel.Visible = False objExcel.DisplayAlerts = False Set objFso = CreateObject ("Scripting.FileSystemObject") Définissez objFolder = objFso.GetFolder (strPath) Pour chaque objFile dans objFolder.Files fileName = objFile.Path If (objFso.GetExtensionName (objFile.Path) = "xls") Then Définissez objWorkbook = objExcel.Workbooks.Open (fileName) saveFileName = Remplacer (fileName, ". xls", ". xlsx") objWorkbook.SaveAs saveFileName, 51 objWorkbook.Close () objExcel.Application.DisplayAlerts = True Fin si Suivant MsgBox "Conversion terminée"
Remarque: recherchez les espaces dans le chemin du dossier, si votre chemin a un espace entre les deux, mettez le chemin entre guillemets.