为了方便日常在Excel中工作,编写了以下代码,实现在Excel工作表中点击按钮,打开指定文件夹下的任一文件,并将此文件的sheet1表格的数据复制到当前VBA代码所处的ThisWorkbook的sheet1的表格中的功能。
Excel一般未打开开发工具,可自行百度如何打开。点击开发者工具>插入>第一个控件>创建>输入以下代码:
Sub 按钮1_Click()
Dim f As FileDialog '声明控件
Dim filename$
Set f = Application.FileDialog(msoFileDialogOpen) '表示文件对话框的实例。
With f '打开文件的路径
.InitialFileName = "E:\111" '默认初始路径InitialFileName
.Show
Workbooks.Open(.SelectedItems(1)) '选择并打开默认初始路径下的文件夹中的文件
ActiveWorkbook.Sheets(1).Cells.Copy ThisWorkbook.Sheets(1).Cells '实现复制
ActiveWorkbook.Close '关闭文件
End With
End Sub
注意事项:
1、默认初始路径InitialFileName:默认打开的文件夹的路径,E:\111只是一个例子,可自行调整,此处未加入异常处理,异常处理使用情况:打开的文件夹不存在,但是此场景下,一般是打开已经存在的文件夹,故此处未设置异常处理,如有需要,可在此处修改代码。
2、ActiveWorkbook与ThisWorkbook的区别:
(1)thisworkbook指当前VBA代码所处的Workbook,
(2)Activeworkbook指当前活跃的Workbook
相同点:如果VBA代码只对本身工作簿进行操作,则一直是相同的
不同点:若VBA代码新建或打开了其它工作簿,则往往新建的或刚打开的是Activeworkbook,可以通过 “工作簿名。active”方法激活指定对象