我们在工作中,一定遇到过需要对批量的excel文件进行同一种操作的情况。如果文件不多,我们当然可以一个一个文件打开,然后修改、保存、关闭。但是,如果有几十个、几百个文件,我们再这样操作就相当的浪费时间了。
写这篇文章就是因为有一个网友前几天问了我一个这样的问题,希望他能够看到这篇文章。
今天我们就来学习一下使用VBA代码来解决这个重复、枯燥的问题的方法。
既然要用到VBA,那我们就需要知道VBA编辑器在哪里。在Excel中,是自带了VBA编辑器的,只是通常情况下,在Excel的工具栏里是看不到的,这需要我们进行一些设置。
调出【开发工具】选项卡
如下图所示,我们依次点击文件--选项--自定义功能区,在“自定义功能区”下勾选“开发工具”选项,然后点击“确定”即可将“开发工具”选项卡显示在工具栏上。

如下图所示,VBA代码编辑器的入口就在“开发工具”选项卡下面。点击“开发工具”选项卡,我们可以看到工具栏的最左边有一个“Visual Basic”按,点击它就可以调出VBA代码编辑器。

VBA代码编辑器如下图:

插入一个模块
在VBA代码编辑器中,虽然不一定要在“模块”里编辑代码,但是我习惯了,所以我们还是插入一个模块吧。
在编辑器左边的“工程”窗口下找与我们打开的Excel文件同名的项目,点击鼠标右键,在弹出的菜单栏里选择“插入”,在弹出的子菜单里点击“模块”,即可在下面插入一个模块。

好了,模块插入成功后,我们“双击”刚才插入的“模块”,就可以在右边的代码编辑区域里编辑VBA代码了。

代码编辑
※ 第一步、获取文件夹里的所有Excel文件的文件名
获取文件夹内所有Excel文件的文件名的代码如下:
Sub dir_file()
Dim path As String
’输入文件夹路径
path = InputBox("请输入文件夹路径:")
’读取文件名后缀为 .xlsx 的文件的文件名
filetest = Dir(path & "\" & "*.xlsx")
If filetest <> "获取文件夹里所有的文件名.xlsm" Then
’把文件名写入表格
Cells(1, 1) = filetest
end if
i = 2
’循环读取文件夹里的文件名
Do While filetest <> ""
filetest = Dir
’将文件名依次写入本工作簿、本工作表的A列
If filetest <> "获取文件夹里所有的文件名.xlsm" Then
Cells(i, 1) = filetest
i = i + 1
End If
Loop
’ 在这里插入后续代码
’ 在这里插入后续代码
End Sub
※ 第二步、依次打开文件、编辑文件
将下面的代码插入上面的代码里面,就可以实现打开Excel文件并对文件内容进行编辑的功能了。
’依次打开文件然后进行操作 Dim opf As Workbook j = 1 Do While Cells(j, 1) <> "" ’从表格中获取文件名 file_name = Cells(j, 1).Value ’根据文件名打开文件 Set opf = Workbooks.Open(path & "\" & file_name) ’对打开的Excel文件进行编辑 opf.Worksheets(1).Cells(1, 2) = file_name ’保存文件 opf.Save ’关闭文件 opf.Close j = j + 1 Loop
在上面的这一段代码中,如下图所示的这一段代码就是对打开的Excel文件的具体操作的代码,如果你需要对Excel文件进行其他的操作,你可以录制一段宏代码,然后用这段宏代码替换掉这一段代码就可以了。

调用VBA代码
我们可以通过插入按钮来调用VBA代码。
如下图所示,点击“开发工具”下的“插入”按钮,在弹出的选择列表下的“表单控件”下,选择“按钮(窗体控件)”,然后在下面的表格编辑区里拖动鼠标绘制一个按钮。
在弹出的“指定宏”窗口中,选择你刚刚编辑的VBA代码后点击确定。
好了,现在你点击这个按钮就可以调用刚刚编辑的VBA代码了。

我是Excel大白,非常感谢你能够看完这边文章,也欢迎大家访问我的头条主页。
大家有什么问题可以在下面留言或者私信我。