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 Formats
OFC'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ç.