如何在excel工作簿所有工作表中运行宏
- 2022-11-12
- 来源/作者: Wps Office教程网/ 菜鸟图库
- 137 次浏览
在文件夹中所有文件上运行宏,或者在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集合中存储的文件上运行所有宏之后。
标签(TAG) excel图表制作 excel常用函数 excel数据透视表