Yanıtlar:
Office Migration Planning Manager'a bakın.
Araç seti ayrıca ikili dosyadan OpenXML formatlarına toplu belge dönüşümleri sağlayan Office Dosya Dönüştürücüsü'nü (OFC) içerir. ( Technet )
Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File FormatsOFC'nin çalışması için de ihtiyacınız olduğunu unutmayın .
Her iki araç da artık desteklenmiyor gibi görünüyor.
Bir klasör içindeki dosyaları xls'den xlsx'e dönüştürmek için makro işlemeyi öneririm. Bu kod, dosyaların hepsinin bir klasörde bulunduğunu ve tüm xls dosyalarının dönüştürülmesi gerektiğini varsayar, ancak tek tek dosyaları seçmek isterseniz bu kod güncellenebilir.
Bu kodun bir Excel 2007 veya üstü çalışma kitabından çalıştırılması gerekir.
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
Not: Dönüştürmekte olduğunuz dosyalar makro içeriyorsa
FileFormat:=xlOpenXMLWorkbook, okumak için güncellemeniz gerekirFileFormat:=xlOpenXMLWorkbookMacroEnabled. Veya dönüştürülen dosyalarda makro koduna ihtiyacınız yoksa, onu yalnız bırakabilirsiniz ve xlsx biçimine dönüştürdüğünde makroları kaldıracaktır.
Bu yüzden .xls dosyalarını .xlsx'e sessiz bir şekilde dönüştürmek için basit bir VBScript yazdım.
./convert-xls-xlsx.vbs {.xls dosyaları içeren klasörün yolu}
convert-xls-xlsx.vbs:
Set args = WScript.Arguments
strPath = değişkenler (0)
strPath = CreateObject ("Scripting.FileSystemObject"). GetAbsolutePathName (strPath)
Set objExcel = CreateObject ("Excel.Application")
objExcel.Visible = Yanlış
objExcel.DisplayAlerts = Yanlış
Set objFso = CreateObject ("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder (strPath)
ObjFile In Her objFile içinDosyaları
fileName = objFile.Path
(ObjFso.GetExtensionName (objFile.Path) = "xls") ise
Set objWorkbook = objExcel.Workbooks.Open (dosyaAdı)
saveFileName = Değiştir (dosyaAdı, ". xls", ". xlsx")
objWorkbook.SaveAs saveFileName, 51
objWorkbook.Close ()
objExcel.Application.DisplayAlerts = Doğru
End If
Sonraki
MsgBox "Dönüştürme tamamlandı"
NOT: Klasör yolunda boşluk olup olmadığına bakın, yolunuz arasında boşluk varsa yolu tırnak içine alın.
Sub SaveAllAsXLSX ()
Dim strFilename As String
Dim strDocName As String
Dim strPath As String
Çalışma Kitabı Olarak Dim wbk
FileDialog Olarak Dim fDialog
Tamsayı Olarak Dim intPos
Dim strPassword As String
Dim strWritePassword As Dize
Dim varA As String
Dim varB As String
Dim colFiles Yeni Koleksiyon Olarak
Varyant Olarak Dim vDosyası
Set fDialog = Application.FileDialog (msoFileDialogFolderPicker)
FDialog ile
.Title = "Klasörü seçin ve Tamam'ı tıklayın"
.AllowMultiSelect = Doğru
.InitialView = msoFileDialogViewList
Göster. -1 ise
MsgBox "Kullanıcı Tarafından İptal Edildi", "Klasör İçeriğini Listele"
Alt Çık
End If
strPath = fDialog.SelectedItems.Item (1)
Sağ ise (strPath, 1) "\" Sonra strPath = strPath + "\"
İle bitmek
Sola (strPath, 1) = Chr (34) Sonra
strPath = Orta (strPath, 2, Len (strPath) - 2)
End If
Set obj = CreateObject ("Scripting.FileSystemObject")
RecursiveDir colFiles, strPath, "* .xls", Doğru
Her vFile In colFiles için
Debug.Print vFile
strFilename = vFile
varA = Sağ (strFilename, 3)
Eğer (varA = "xls" veya varA = "XLSX") ise
Set wbk = Workbooks.Open (Dosya adı: = strFilename)
Eğer wbk.HasVBProject sonra
wbk.SaveAs Dosya adı: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled
Başka
wbk.SaveAs Dosya adı: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook
End If
wbk.Close SaveChanges: = Yanlış
obj.DeleteFile (strFilename)
End If
Sonraki vFile
End Sub
Ortak İşlev Özyinelemeli Dir (colFiles As Collection, _
strFolder As String, _
strFileSpec As String, _
bIncludeSubfolders: Boolean)
Dim strTemp As String
Dim colFolders Yeni Koleksiyon Olarak
Varyant Olarak Dim vFolderName
'StrFolder ile strFileSpec ile colFiles arasındaki dosyaları ekle
strFolder = TrailingSlash (strFolder)
strTemp = Dir (strFolder & strFileSpec)
Do While strTemp vbNullString
colFiles.Add strFolder & strTemp
strTemp = Yön
döngü
Eğer bIncludeSubfolders ise
'ColFolders öğesini strFolder alt dizinlerinin listesiyle doldur
strTemp = Dir (strFolder, vbDirectory)
Do While strTemp vbNullString
Eğer (strTemp ".") Ve (strTemp "..") Sonra
Eğer (GetAttr (strFolder & strTemp) Ve vbDirectory) 0 Sonra
colFolders.Add strTemp
End If
End If
strTemp = Yön
döngü
'ColFolders içindeki her alt klasör için RecursiveDir'i çağırın
ColFolders içindeki her vFolderName için
RecursiveDir'i çağırın (colFiles, strFolder & vFolderName, strFileSpec, True)
Sonraki vFolderName
End If
Bitiş Fonksiyonu
Genel İşlev TrailingSlash (strFolder As String) Dize Olarak
Len (strFolder)> 0 ise
Sağ ise (strFolder, 1) = "\" Sonra
TrailingSlash = strFolder
Başka
TrailingSlash = strFolder & "\"
End If
End If
Bitiş Fonksiyonu
MsOffice yüklüyse, bu araç hızlı bir düzeltme için indirilmeye değer olabilir.
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
Dönüştürülen xls dosyalarını görmek için bir klasör seçtiğinizde, MS Office kullanan dönüştürme aracı seçeneğini kendi dönüştürücüsüne değil, dönüştürmeye işaretlediğinizden emin olun.
Kendi dönüştürücülerini kullanırsanız, hücrelerdeki renkleri kaybedersiniz ve tek sayfa çıkıyor gibi görünür. Dönüştürücü olarak iyi çalışıyor gibi MsOffice kullanırsanız. Hızlı bir düzeltme için iyi bir araç.