win7系統下載
當前位置: 首頁 > 硬件軟件教程 > 詳細頁面

如何運用VBA大局部轉換Excel格式,大局部將.xls轉換成.xlsx

發布時間:2025-03-18 文章來源:xp下載站 瀏覽:

辦公軟件是指可以進行文字處理、表格制作、幻燈片制作、圖形圖像處理、簡單數據庫的處理等方面工作的軟件。目前辦公軟件朝著操作簡單化,功能細化等方向發展。辦公軟件的應用范圍很廣,大到社會統計,小到會議記錄,數字化的辦公,離不開辦公軟件的鼎力協助。另外,政府用的電子政務,稅務用的稅務系統,企業用的協同辦公軟件,這些都屬于辦公軟件。

Excel2007以前的格式是.xls,之后的格式是.xlsx。打開單獨的一個Excel文檔,使用“另存為”功能,可以很輕松的轉換格式。但是面對幾百個Excel表這樣就太累了,搜索很久,也沒發現一個工具可以直接批量進行格式轉換。

最終發現可以使用VBA來實現批量轉換Excel格式的功能。大家不要被嚇到,VBA我也不懂,代碼是從別人那里搞到的,現在也只是知道了怎么使用,但這足夠解決問題了

VBA介紹:

1、VBA是一種編程語言,它依托于Office軟件,不能獨立的運行,通過VBA可以實現各種Office軟件操作的自動化。

2、Visual Basic for Applications(VBA)是Visual Basic的一種宏語言,主要能用來擴展Windows的應用程式功能。使用Excel的VBA開發的Excel文檔,在Excel中運行時需要開啟Excel的宏功能,否則此文檔的VBA自動化功能將被完全屏蔽,文檔的功能無法實現。

執行條件:

1、Office2007及以上版本的Excel

2、Excel啟用宏

功能介紹:

先介紹這兩個工具功能,大家可以根據需要下載。

【xls-To-xlsx.xlsm】

會在所在文件夾目錄中、包括子目錄中,遍歷所有.xls格式的文件,執行“另存為”操作,然后在原文件當前位置另存為一個同名的.xlsx格式的文件。

比如:

執行前【xls-To-xlsx.xlsm】所在的文件夾中有4個.xls格式的文件;

同時包含一個子文件夾,子文件夾中也有4個.xls格式的文件。

Excel批量將xls轉xlsx-目錄文件

執行后,會生成如下(紅色虛線內標注)文件:

Excel批量將xls轉xlsx結果

【Convert-TO-xlsx.xlsm】

會在所在文件夾目錄中(不包括子目錄),遍歷所有.xls格式的文件,執行“另存為”操作,然后在當前路徑下生成一個xlsx的文件夾,這個文件夾中放了所有新生成的文件。

比如:

執行前【Convert-TO-xlsx.xlsm】所在的【Convert-TO-xlsx】文件夾中有4個.xls格式的文件

Excel批量將xls轉xlsx目錄

執行后,會生成如下(紅色虛線內標注)文件:

Excel批量將xls轉xlsx結果

 

執行方法:

1、下載附件,或者新建一個Excel;

2、啟用宏操作

一般情況下,打開Excel的時候,會彈出如下警告,如果彈出了這個警告,直接啟用就可以了;

Excel安全警告-宏設置

如果沒有出現的話,請參考《Excel怎樣設置啟用宏功能》文章

3、編寫執行VBA代碼

這一步新手肯定是不會的,詳細的圖文介紹就參考《Excel VBA 概述》文章。

這里只作簡單的說明:

  • (a) 在工作表界面按下組合快捷鍵【Alt+F11】或者【右鍵單擊任意一個工作表標簽,在彈出的右鍵快捷菜單單擊“查看代碼”】進入VBA編輯環境
  • (b) 如果是下載的我的工具,可以跳過此步驟;如果是新建的Excel,此時在VBA編輯環境中的“代碼窗口”復制粘貼下方 VBA代碼內容【xls-To-xlsx.xlsm】VBA代碼內容 或者《Convert-TO-xlsx.xlsm》VBA代碼內容兩個代碼中的一個
  • (c) 按下【F5】快捷鍵執行這段代碼或者在菜單中單擊【運行子過程/用戶窗體(F5)】按鈕

PS:需要說明的是,在執行過程中,不要去做其他的操作,不然可能會中斷程序的運行

VBA代碼內容

【xls-To-xlsx.xlsm】VBA代碼內容

'***********訪問當前文件夾目錄下所有子文件夾及文件, Dim iFile(1 To 100000) As String Dim count As Integer  Sub xls2xlsx()     iPath = ThisWorkbook.Path     On Error Resume Next     count = 0     zdir iPath     For i = 1 To count         If iFile(i) Like "*.xls" And iFile(i) <> ThisWorkbook.FullName Then      '請注意區分目錄下文件后綴.xls大小寫             MyFile = iFile(i)             FilePath = Replace(MyFile, ".xls", ".xlsx")      '請注意區分目錄下文件后綴.xls大小寫             If Dir(FilePath, 16) = Empty Then                 Set WBookOther = Workbooks.Open(MyFile)                 Application.ScreenUpdating = False                 ActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False                 WBookOther.Close SaveChanges:=False      '解決不能close 文件問題                 Application.ScreenUpdating = True             End If         End If     Next End Sub  Sub zdir(p)       '訪問當前文件夾下所有子文件夾及文件   Set fs = CreateObject("scripting.filesystemobject")   For Each f In fs.GetFolder(p).Files     If f <> ThisWorkbook.FullName Then count = count + 1: iFile(count) = f   Next   For Each m In fs.GetFolder(p).SubFolders       zdir m   Next End Sub

 

《Convert-TO-xlsx.xlsm》VBA代碼內容

Sub xls2xlsx() Dim FilePath, MyFile, iPath, Name, OutPath As String iPath = ThisWorkbook.Path OutPath = Dir(iPath & "\xlsx", vbDirectory) If OutPath = "" Then     MkDir (iPath & "\xlsx") End If MyFile = Dir(iPath & "\*.xls")  If MyFile <> "" Then Do     On Error Resume Next     If MyFile = ThisWorkbook.Name Then MyFile = Dir     Workbooks.Open (iPath & "\" & MyFile)     MyFile = Replace(MyFile, ".xls", ".xlsx")     Name = "\" & MyFile     FilePath = iPath & "\xlsx" & Name     Application.ScreenUpdating = False     ActiveWorkbook.SaveAs Filename:=FilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False     Workbooks(MyFile).Close True     Application.ScreenUpdating = True     MyFile = Dir Loop While MyFile <> "" End If End Sub

 

后來有同學提了些問題,最后執行代碼的時候,并沒有達到效果。

先來看下正常的效果,會先彈出一個對話框,然后運行

Excel表格文件XLS轉換成XLSX運行窗口

出問題的原因是:

在使用過程中請留意Excel的后綴名【.xls 或 .XLS】大小寫區分。如果后綴大小寫不區分會導致了代碼不能執行或執行以后無效果。

針對這種情況只要將代碼中的后綴名大小寫與文件夾中的文件的后綴改成相同就可以了。

還可以用《拖把更名器》軟件,批量將文件后綴名改為小寫后再進行操作。

Excel表格文件XLS轉換成XLSX區分大小寫4

Office辦公軟件是辦公的第一選擇,這個地球人都知道。

久久亚洲国产的中文