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.