ฉันต้องทำงานกับแอปพลิเคชันเก่าที่สามารถส่งออกไฟล์ XLS เท่านั้นและฉันเขียนโปรแกรมใน. Net โดยใช้ไลบรารี EPPlus ที่สามารถอ่านไฟล์ XLSX ได้เท่านั้น
วิธีที่ง่ายที่สุดในการแปลงชุดจาก XLS เป็น XLSX คืออะไร?
ฉันต้องทำงานกับแอปพลิเคชันเก่าที่สามารถส่งออกไฟล์ XLS เท่านั้นและฉันเขียนโปรแกรมใน. Net โดยใช้ไลบรารี EPPlus ที่สามารถอ่านไฟล์ XLSX ได้เท่านั้น
วิธีที่ง่ายที่สุดในการแปลงชุดจาก XLS เป็น XLSX คืออะไร?
คำตอบ:
ตรวจสอบผู้จัดการการวางแผนโยกย้าย Office
ชุดเครื่องมือนี้ยังมี Office File Converter (OFC) ซึ่งเปิดใช้งานการแปลงเอกสารจำนวนมากจากรูปแบบไบนารีเป็น OpenXML ( Technet )
โปรดทราบว่าคุณจะต้องMicrosoft Office Compatibility Pack for Word, Excel, and PowerPoint File Formats
ใช้ OFC ในการทำงานด้วย
เครื่องมือทั้งสองดูเหมือนจะไม่ได้รับการสนับสนุนอีกต่อไป
ฉันขอแนะนำให้ใช้แมโครเพื่อประมวลผลไฟล์ภายในโฟลเดอร์เพื่อแปลงไฟล์จาก xls เป็น xlsx รหัสนี้อนุมานว่าไฟล์ทั้งหมดอยู่ภายในโฟลเดอร์เดียวและไฟล์ xls ทั้งหมดจะต้องถูกแปลง แต่ถ้าคุณต้องการเลือกไฟล์แต่ละไฟล์รหัสนี้สามารถอัปเดตได้
รหัสนี้จะต้องเรียกใช้จาก Excel 2007 หรือสูงกว่าสมุดงาน
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
หมายเหตุ:ถ้าไฟล์ที่คุณกำลังแปลงประกอบด้วยแมโครแล้วคุณจะต้องอัปเดตในการอ่าน
FileFormat:=xlOpenXMLWorkbook
FileFormat:=xlOpenXMLWorkbookMacroEnabled
หรือถ้าคุณไม่ต้องการรหัสแมโครในไฟล์ที่แปลงคุณสามารถปล่อยให้มันอยู่คนเดียวและมันจะลบมาโครเมื่อมันแปลงเป็นรูปแบบ xlsx
ดังนั้นฉันจึงเขียน VBScript แบบง่าย ๆ เพื่อแปลงไฟล์. xls เป็น. xlsx แบบเงียบ ๆ
./convert-xls-xlsx.vbs {พา ธ ไปยังโฟลเดอร์ที่มีไฟล์. xls}
convert-xls-xlsx.vbs:
ตั้ง args = WScript.Arguments strPath = args (0) strPath = CreateObject ("Scripting.FileSystemObject") GetAbsolutePathName (strPath) ตั้งค่า objExcel = CreateObject ("Excel.Application") objExcel.Visible = เท็จ objExcel.DisplayAlerts = False ตั้งค่า objFso = CreateObject ("Scripting.FileSystemObject") ตั้งค่า objFolder = objFso.GetFolder (strPath) สำหรับแต่ละ objFile ใน objFolder.Files fileName = objFile.Path ถ้า (objFso.GetExtensionName (objFile.Path) = "xls") จากนั้น ตั้งค่า objWorkbook = objExcel.Workbooks.Open (ชื่อไฟล์) saveFileName = แทนที่ (fileName, ". xls", ". xlsx") objWorkbook.SaveAs saveFileName, 51 objWorkbook.Close () objExcel.Application.DisplayAlerts = True สิ้นสุดถ้า ต่อไป MsgBox "การแปลงเสร็จสิ้น"
หมายเหตุ: ระวังช่องว่างในเส้นทางโฟลเดอร์หากเส้นทางของคุณมีช่องว่างคั่นกลางให้ใส่เส้นทางด้วยเครื่องหมายคำพูด
Sub SaveAllAsXLSX () strFilename ติ่มซำเป็นสตริง strDocName มัวเป็นสตริง strpath ติ่มซำเป็นสตริง Dim wbk เป็นสมุดงาน Dim fDialog As FileDialog Dim intPos As Integer Dim strPassword As String Dim strWritePassword As String Dim varA As String Dim varB As String Dim colFiles เป็นชุดใหม่ Dim vFile As Variant ตั้งค่า fDialog = Application.FileDialog (msoFileDialogFolderPicker) ด้วย fDialog .Title = "เลือกโฟลเดอร์แล้วคลิกตกลง" .AllowMultiSelect = True .InitialView = msoFileDialogViewList ถ้า. แสดง -1 แล้ว MsgBox "ยกเลิกโดยผู้ใช้", "รายการเนื้อหาโฟลเดอร์" ออกจากตำบล สิ้นสุดถ้า strPath = fDialog.SelectedItems.Item (1) ถ้าถูกต้อง (strPath, 1) "\" ดังนั้น strPath = strPath + "\" จบด้วย ถ้า Left (strPath, 1) = Chr (34) แล้ว strPath = กลาง (strPath, 2, Len (strPath) - 2) สิ้นสุดถ้า ตั้งค่า obj = CreateObject ("Scripting.FileSystemObject") RecursiveDir colFiles, strPath, "* .xls", True สำหรับแต่ละ vFile In colFiles Debug.Print vFile strFilename = vFile varA = ขวา (strFilename, 3) ถ้า (varA = "xls" หรือ varA = "XLSX") จากนั้น ตั้งค่า wbk = สมุดงานเปิด (ชื่อไฟล์: = strFilename) หาก wbk.HasVBProject นั้น wbk.SaveAs ชื่อไฟล์: = strFilename & "m", FileFormat: = xlOpenXMLWorkbookMacroEnabled อื่น wbk.SaveAs ชื่อไฟล์: = strFilename & "x", FileFormat: = xlOpenXMLWorkbook สิ้นสุดถ้า wbk.Close SaveChanges: = False obj.DeleteFile (strFilename) สิ้นสุดถ้า ถัดไป vFile ส่วนท้าย ฟังก์ชั่นสาธารณะ RecursiveDir (colFiles เป็นชุดสะสม, _ strFolder เป็นสตริง, _ strFileSpec As String, _ bIncludeSubfolders ในฐานะบูลีน) ติ่มซำ strTemp As String Dim colFolders เป็นชุดใหม่ Dim vFolderName เป็น Variant 'เพิ่มไฟล์ใน strFolder ที่ตรงกับ strFileSpec ไปที่ colFiles strFolder = TrailingSlash (strFolder) strTemp = Dir (strFolder & strFileSpec) ทำในขณะที่ strTemp vbNullString colFiles เพิ่ม strFolder & strTemp strTemp = Dir ห่วง ถ้า bIncludeSubfolders แล้ว 'เติม colFolders ด้วยรายการไดเรกทอรีย่อยของ strFolder strTemp = Dir (strFolder, vbDirectory) ทำในขณะที่ strTemp vbNullString ถ้า (strTemp ".") และ (strTemp ".. ") จากนั้น ถ้า (GetAttr (strFolder & strTemp) และ vbDirectory) 0 จากนั้น colFolders เพิ่ม strTemp สิ้นสุดถ้า สิ้นสุดถ้า strTemp = Dir ห่วง 'โทร RecursiveDir สำหรับแต่ละโฟลเดอร์ย่อยใน colFolders สำหรับแต่ละ vFolderName ใน colFolders โทร RecursiveDir (colFiles, strFolder & vFolderName, strFileSpec, True) ถัดไป vFolderName สิ้นสุดถ้า ฟังก์ชั่นสิ้นสุด ฟังก์ชั่นที่สาธารณะ TrailingSlash (strFolder As String) As String ถ้า Len (strFolder)> 0 จากนั้น ถ้าถูกต้อง (strFolder, 1) = "\" จากนั้น TrailingSlash = strFolder อื่น TrailingSlash = strFolder & "\" สิ้นสุดถ้า สิ้นสุดถ้า ฟังก์ชั่นสิ้นสุด
หากคุณติดตั้ง MsOffice ไว้เครื่องมือนี้อาจคุ้มค่าสำหรับการดาวน์โหลดสำหรับการแก้ไขอย่างรวดเร็ว
http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm
เมื่อคุณเลือกโฟลเดอร์เพื่อดูไฟล์ xls ที่ถูกแปลงตรวจสอบให้แน่ใจว่าคุณทำเครื่องหมายที่ตัวเลือกเครื่องมือการแปลงที่ใช้ MS Office เพื่อการแปลงไม่ใช่ตัวแปลงของพวกเขาเอง
หากคุณใช้ตัวแปลงของคุณเองคุณจะสูญเสียสีในเซลล์และดูเหมือนว่าแผ่นงานแผ่นเดียวจะออกมา หากคุณใช้ MsOffice เนื่องจากตัวแปลงดูเหมือนจะทำงานได้ดี เครื่องมือที่ดีสำหรับการแก้ไขอย่างรวดเร็ว