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 Formatsdamit 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:=xlOpenXMLWorkbookzu 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.