Antworten:
Schauen Sie sich Office Migration Planning Manager an.
Das Toolkit enthält auch den Office File Converter (OFC), der die Konvertierung von Massendokumenten von Binär- in OpenXML-Formate ermöglicht. ( Technet )
Beachten Sie, dass Sie auch das benötigen, Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
damit das OFC funktioniert.
Beide Tools scheinen nicht mehr wirklich unterstützt zu werden.
Ich würde empfehlen, ein Makro zu verwenden, um die Dateien in einem Ordner zu verarbeiten und sie von xls in xlsx zu konvertieren. Bei diesem Code wird davon ausgegangen, dass sich alle Dateien in einem Ordner befinden und dass alle XLS-Dateien konvertiert werden müssen. Wenn Sie jedoch einzelne Dateien auswählen möchten, kann dieser Code aktualisiert werden.
Dieser Code muss in einer Excel 2007-Arbeitsmappe oder höher ausgeführt werden.
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
Hinweis: Wenn die zu konvertierenden Dateien Makros enthalten, müssen Sie die
FileFormat:=xlOpenXMLWorkbook
zu lesenden Dateien aktualisierenFileFormat:=xlOpenXMLWorkbookMacroEnabled
. Wenn Sie den Makrocode in den konvertierten Dateien nicht benötigen, können Sie ihn in Ruhe lassen und die Makros werden entfernt, wenn er in das xlsx-Format konvertiert wird.
Sub SaveAllAsXLSX () Dim strFilename As String Dim strDocName As String Dim strPath As String Dim wbk As Workbook Dim fDialog As FileDialog IntPos als Ganzzahl dimmen Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB As String Dim colFiles As New Collection Dim vFile As Variant Setze fDialog = Application.FileDialog (msoFileDialogFolderPicker) Mit fDialog .Title = "Ordner auswählen und auf OK klicken" .AllowMultiSelect = True .InitialView = msoFileDialogViewList Wenn .Show -1 Dann MsgBox "Vom Benutzer abgebrochen", "Ordnerinhalt auflisten" Sub beenden End If strPath = fDialog.SelectedItems.Item (1) Wenn richtig (strPath, 1) "" Dann strPath = strPath + "" Ende mit Wenn Links (strPath, 1) = Chr (34) Dann strPath = Mid (strPath, 2, Len (strPath) - 2) End If Setze obj = CreateObject ("Scripting.FileSystemObject") RecursiveDir colFiles, strPath, "* .xls", True Für jede vFile In colFiles Debug.Print vFile strFilename = vFile varA = Rechts (strFilename, 3) If (varA = "xls" oder varA = "XLSX") Dann Setze wbk = Workbooks.Open (Dateiname: = strFilename) Wenn wbk.HasVBProject Dann wbk.SaveAs Dateiname: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled Sonst wbk.SaveAs Dateiname: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook End If wbk.Close SaveChanges: = False obj.DeleteFile (strFilename) End If Nächste vFile End Sub Öffentliche Funktion RecursiveDir (colFiles As Collection, _ strFolder As String, _ strFileSpec As String, _ bIncludeSubfolders As Boolean) Dim strTemp As String Dim colFolders As New Collection Dim vFolderName As Variant 'Fügen Sie in strFolder Dateien hinzu, die mit strFileSpec zu colFiles übereinstimmen strFolder = TrailingSlash (strFolder) strTemp = Dir (strFolder & strFileSpec) Do While strTemp vbNullString colFiles.Add strFolder & strTemp strTemp = Dir Schleife Wenn bIncludeSubfolders Dann 'Füllen Sie colFolders mit der Liste der Unterverzeichnisse von strFolder strTemp = Dir (strFolder, vbDirectory) Do While strTemp vbNullString If (strTemp ".") Und (strTemp "..") Dann If (GetAttr (strFolder & strTemp) And vbDirectory) 0 Then colFolders.Add strTemp End If End If strTemp = Dir Schleife 'Rufen Sie RecursiveDir für jeden Unterordner in colFolders auf Für jeden vFolderName In colFolders Rufen Sie RecursiveDir auf (colFiles, strFolder & vFolderName, strFileSpec, True) Nächster vFolderName End If Endfunktion Öffentliche Funktion TrailingSlash (strFolder As String) As String Wenn Len (strFolder)> 0 Dann Wenn rechts (strFolder, 1) = "\" Dann TrailingSlash = strFolder Sonst TrailingSlash = strFolder & "\" End If End If Endfunktion
Wenn Sie MsOffice installiert haben, ist dieses Tool möglicherweise einen Download wert, um eine schnelle Lösung zu finden.
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
Wenn Sie einen Ordner auswählen, in dem die konvertierten XLS-Dateien angezeigt werden sollen, aktivieren Sie die Option zum Konvertieren, mit der MS Office für die Konvertierung verwendet wird, und nicht den eigenen Konverter.
Wenn Sie einen eigenen Konverter verwenden, verlieren Sie Farben in den Zellen und ein einzelnes Blatt scheint herauszukommen. Wenn Sie MsOffice als Konverter verwenden, scheint dies gut zu funktionieren. Gutes Werkzeug für eine schnelle Lösung.
Also habe ich ein einfaches VBScript geschrieben, um XLS-Dateien stillschweigend in XLSX-Dateien zu konvertieren.
./convert-xls-xlsx.vbs {Pfad zum Ordner mit XLS-Dateien}
convert-xls-xlsx.vbs:
Setze args = WScript.Arguments strPath = args (0) strPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (strPath) Setze objExcel = CreateObject ("Excel.Application") objExcel.Visible = False objExcel.DisplayAlerts = False Setze objFso = CreateObject ("Scripting.FileSystemObject") Setze objFolder = objFso.GetFolder (strPath) Für jede objFile In objFolder.Files Dateiname = objFile.Path If (objFso.GetExtensionName (objFile.Path) = "xls") Dann Setze objWorkbook = objExcel.Workbooks.Open (Dateiname) saveFileName = Ersetzen (Dateiname, ". xls", ". xlsx") objWorkbook.SaveAs saveFileName, 51 objWorkbook.Close () objExcel.Application.DisplayAlerts = True End If Nächster MsgBox "Konvertierung abgeschlossen"
HINWEIS: Achten Sie auf Leerzeichen im Ordnerpfad. Wenn Ihr Pfad ein Leerzeichen dazwischen enthält, setzen Sie den Pfad in Anführungszeichen.