Jawaban:
Lihat Manajer Perencanaan Migrasi Kantor.
Toolkit ini juga berisi Office File Converter (OFC), yang memungkinkan konversi dokumen massal dari format biner ke OpenXML. ( Technet )
Saya akan merekomendasikan menggunakan makro untuk memproses file dalam folder untuk mengonversinya dari xls ke xlsx. Kode ini mengasumsikan bahwa semua file berada dalam satu folder dan semua file xls perlu dikonversi, tetapi jika Anda ingin memilih file individual, kode ini dapat diperbarui.
Kode ini harus dijalankan dari buku kerja Excel 2007 atau Excel 2010.
Option Explicit
' Convert all xls files in selected folder to xlsx
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
strConversionPath = .SelectedItems(1)
End With
Set FSO = New Scripting.FileSystemObject
' Check if the folder exists
If FSO.FolderExists(strConversionPath) Then
Set fFolder = FSO.GetFolder(strConversionPath)
' Loop through files, find the .xls files
For Each fFile In fFolder.Files
If Right(fFile.Name, 4) = ".xls" Or Right(fFile.Name, 4) = ".XLS" Then
Application.DisplayAlerts = False
Set wkbConvert = Workbooks.Open(fFile.Path)
' Save as XML workbook - if file contains macros change FileFormat:=52
wkbConvert.SaveAs FSO.BuildPath(fFile.ParentFolder, Left(fFile.Name, Len(fFile.Name) - 4)) & ".xlsx", FileFormat:=51
wkbConvert.Close SaveChanges:=False
' Delete original file
fFile.Delete Force:=True
Application.DisplayAlerts = True
End If
Next fFile
End If
End Sub
Jika file yang Anda konversi mengandung makro maka Anda perlu memperbarui 'FileFormat: = 51' untuk membaca 'FileFormat: = 52'. Atau jika Anda tidak perlu membuat kode makro dalam file yang dikonversi, Anda bisa membiarkannya sendiri dan itu akan menghapus makro ketika mengubahnya menjadi format xlsx.
Sub SaveAllAsXLSX () Dim strFilename As String Dim strDocName As String Dim strPath As String Dim wbk Sebagai Workbook Dim fDialog Sebagai FileDialog Dim intPos As Integer Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB As String Dim colFiles As Collection Baru Dim vFile As Variant Set fDialog = Application.FileDialog (msoFileDialogFolderPicker) Dengan fDialog .Title = "Pilih folder dan klik OK" .AllowMultiSelect = Benar .InitialView = msoFileDialogViewList Jika .Show -1 Lalu MsgBox "Dibatalkan Oleh Pengguna",, "Daftar Isi Folder" Keluar Sub Berakhir jika strPath = fDialog.SelectedItems.Item (1) Jika Benar (strPath, 1) "\" Lalu strPath = strPath + "\" Berakhir dengan If Left (strPath, 1) = Chr (34) Kemudian strPath = Pertengahan (strPath, 2, Len (strPath) - 2) Berakhir jika Set obj = CreateObject ("Scripting.FileSystemObject") FileFile RecursiveDir, strPath, "* .xls", Benar Untuk Setiap vFile Di colFiles Debug.Print vFile strFilename = vFile varA = Kanan (strFilename, 3) Jika (varA = "xls" Atau varA = "XLSX") Kemudian Set wbk = Workbooks.Open (Nama file: = strFilename) Jika wbk.HasVBProject Kemudian wbk.SaveAs Nama file: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled Lain wbk.SaveAs Nama file: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook Berakhir jika wbk.Tutup SaveChanges: = Salah obj.DeleteFile (strFilename) Berakhir jika VFile selanjutnya End Sub Fungsi Publik RecursiveDir (colFiles As Collection, _ strFolder As String, _ strFileSpec As String, _ bIncludeSubfolder Sebagai Boolean) Dim strTemp As String Dim colFolders As Collection Baru Dim vFolderName As Variant 'Tambahkan file dalam strFolder yang sesuai strFileSpec ke colFiles strFolder = TrailingSlash (strFolder) strTemp = Dir (strFolder & strFileSpec) Do While strTemp vbNullString colFiles.Tambahkan strFolder & strTemp strTemp = Dir Loop Jika bIncludeSubfolders Then 'Isi colFolder dengan daftar subdirektori dari strFolder strTemp = Dir (strFolder, vbDirectory) Do While strTemp vbNullString If (strTemp ".") Dan (strTemp "..") Kemudian If (GetAttr (strFolder & strTemp) Dan vbDirectory) 0 Lalu colFolders.Tambahkan strTemp Berakhir jika Berakhir jika strTemp = Dir Loop 'Panggil RecursiveDir untuk setiap subfolder di colFolder Untuk Setiap vFolderName Dalam colFolder Panggil RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True) VFolderName Selanjutnya Berakhir jika Fungsi Akhir Fungsi Publik TrailingSlash (strFolder As String) Sebagai String If Len (strFolder)> 0 Then If Right (strFolder, 1) = "\" Lalu TrailingSlash = strFolder Lain TrailingSlash = strFolder & "\" Berakhir jika Berakhir jika Fungsi Akhir
Jika Anda telah menginstal MsOffice, maka alat ini mungkin layak diunduh untuk perbaikan cepat.
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
Ketika Anda memilih folder untuk melihat file xls dikonversi, pastikan Anda mencentang opsi alat konversi yang menggunakan MS Office untuk konversi, bukan konverter mereka sendiri.
Jika Anda menggunakan konverter mereka sendiri, Anda akan kehilangan warna di sel dan satu lembar tampaknya keluar. Jika Anda menggunakan MsOffice sebagai konverter tampaknya berfungsi dengan baik. Alat yang bagus untuk perbaikan cepat.
Jadi saya menulis VBScript sederhana untuk mengonversi file .xls ke .xlsx dengan diam.
./convert-xls-xlsx.vbs {path ke folder yang berisi file .xls}
convert-xls-xlsx.vbs:
Setel args = WScript.Arguments strPath = args (0) strPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (strPath) Setel objExcel = CreateObject ("Excel.Application") objExcel.Visible = Salah objExcel.DisplayAlerts = Salah Set objFso = CreateObject ("Scripting.FileSystemObject") Setel objFolder = objFso.GetFolder (strPath) Untuk Setiap objFile Di objFolder.Files fileName = objFile.Path If (objFso.GetExtensionName (objFile.Path) = "xls") Kemudian Setel objWorkbook = objExcel.Workbooks.Open (fileName) saveFileName = Ganti (fileName, ". xls", ". xlsx") objWorkbook.SaveAs saveFileName, 51 objWorkbook.Close () objExcel.Application.DisplayAlerts = Benar Berakhir jika Lanjut MsgBox "Selesai konversi"
CATATAN: Cari spasi di path folder, jika path Anda memiliki spasi di antaranya, masukkan path dalam tanda kutip.