發布時間: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格式的文件。 ![]() 執行后,會生成如下(紅色虛線內標注)文件: ![]() 【Convert-TO-xlsx.xlsm】會在所在文件夾目錄中(不包括子目錄),遍歷所有.xls格式的文件,執行“另存為”操作,然后在當前路徑下生成一個xlsx的文件夾,這個文件夾中放了所有新生成的文件。 比如: 執行前【Convert-TO-xlsx.xlsm】所在的【Convert-TO-xlsx】文件夾中有4個.xls格式的文件 ![]() 執行后,會生成如下(紅色虛線內標注)文件: ![]()
執行方法:1、下載附件,或者新建一個Excel; 2、啟用宏操作 一般情況下,打開Excel的時候,會彈出如下警告,如果彈出了這個警告,直接啟用就可以了; ![]() 如果沒有出現的話,請參考《Excel怎樣設置啟用宏功能》文章 3、編寫執行VBA代碼 這一步新手肯定是不會的,詳細的圖文介紹就參考《Excel VBA 概述》文章。 這里只作簡單的說明:
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 或 .XLS】大小寫區分。如果后綴大小寫不區分會導致了代碼不能執行或執行以后無效果。 針對這種情況只要將代碼中的后綴名大小寫與文件夾中的文件的后綴改成相同就可以了。 還可以用《拖把更名器》軟件,批量將文件后綴名改為小寫后再進行操作。 ![]() Office辦公軟件是辦公的第一選擇,這個地球人都知道。 |
上一篇:Excel如何設置啟用宏技巧