Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成為最流行的個人計算機數據處理軟件。 在文件夾中所有文件上運行宏,或者在Excel工作簿中所有工作表上運行宏,這可能是一種非常好的Excel自動化方案。例如處理類似的數據工作簿文件并想要提取數據或轉換該工作簿。下面給出了適用這種情況的一些VBA程序,這些程序代碼整理自analystcave.com,供有興趣的朋友參考。 在文件夾內所有文件中運行宏 代碼如下: - ‘本程序來自于analystcave.com
- Sub RunOnAllFilesInFolder()
- Dim folderName As String
- Dim eApp As Excel.Application
- Dim fileName As String
- Dim wb As Workbook
- Dim ws As Worksheet
- Dim currWs As Worksheet
- Dim currWb As Workbook
- Dim fDialog As Object
- Set fDialog =Application.FileDialog(msoFileDialogFolderPicker)
- Set currWb =ActiveWorkbook
- Set currWs = ActiveSheet
- ‘選擇存儲所有文件的文件夾
- fDialog.Title = “選擇文件夾”
- fDialog.InitialFileName =currWb.Path
- If fDialog.Show = -1 Then
- folderName =fDialog.SelectedItems(1)
- End If
- ‘創建一個單獨的不可見的Excel處理進程
- Set eApp = NewExcel.Application
- eApp.Visible = False
- ‘搜索文件夾中的所有文件[使用你的格式例如*.xlsx來代替*.*]
- fileName = Dir(folderName& “\*.*”)
- Do While fileName<> “”
- ‘更新狀態欄來指示進度
- Application.StatusBar= “正在處理” & folderName & “\” & fileName
- Set wb =eApp.Workbooks.Open(folderName & “\” & fileName)
- ‘…
- ‘在這里放置你的代碼
- ‘…
- wb.CloseSaveChanges:=False ‘關閉打開的工作簿
- Debug.Print “已處理 “& folderName & “\” & fileName
- fileName = Dir()
- Loop
- eApp.Quit
- Set eApp = Nothing
- ‘清除狀態欄并通知宏已完成
- Application.StatusBar =””
- MsgBox “在所有工作簿中都完成了宏執行”
- End Sub
這段代碼完成下列操作: 1.在當前工作簿路徑中打開“選擇文件”對話框,要求選擇一個用于存儲所有文件的文件夾。 2.打開一個單獨的Excel進程(應用程序),然后逐個打開每個文件。 3.使用要在每個打開的工作簿上運行的代碼替換“在這里放置你的代碼”部分。 4.每個打開的工作簿在關閉時不會保存所作的修改。 在子文件夾內所有文件中運行宏 當想在文件夾中所有Excel文件上運行宏時,其中的一種情況是遍歷所有子文件夾來運行宏。下面的內容與前述內容幾乎相同,但是請注意聲明了一個全局變量fileCollection,這將首先用于存儲子文件夾中標識的所有文件,并且僅用于在此VBA集合中存儲的文件上運行所有宏之后。
Excel整體界面趨于平面化,顯得清新簡潔。流暢的動畫和平滑的過渡,帶來不同以往的使用體驗。
|