3.5.3-代码解析:S02_读入数据¶
该过程的实现的功能如下:
1)弹出文件选择框
2)获取已选择文件信息
3)将选择文件的绝对地址和文件名信息作为参数传给过程S0201_文件处理
4)在K3单元格写入已点击
代码如下
1 | Sub S02_读入数据()
2 | Dim longName As String
3 | Dim shortName As String
4 | Dim selectFile
5 | Dim fso
6 | Dim shtFirst
7 |
8 | Set fso = CreateObject("Scripting.FileSystemObject")
9 | Set shtFirst = ThisWorkbook.Worksheets("操作界面")
10 |
11 | With Application.FileDialog(msoFileDialogOpen)
12 | .Title = "选择文件"
13 | .AllowMultiSelect = True
14 | .Filters.Clear
15 | .Filters.Add "Excel文件", "*.xlsx"
16 | .FilterIndex = 2 '默认的文件筛选条件的索引号
17 | .InitialFileName = ThisWorkbook.Path & "\" & "【1】输入"
18 | .Show
19 |
20 | For Each selectFile In .SelectedItems
21 | longName = selectFile
22 | shortName = fso.GetFile(longName).Name
23 | Call S0201_文件处理(longName, shortName)
24 | Next
25 | End With
26 |
27 | shtFirst.Range("K3") = "已点击"
28 | End Sub
代码中文解析
1 | Sub S02_读入数据()
2 | 申明变量longName为字符串类型
3 | 申明变量shortName为字符串类型
4 | 申明变量selectFile
5 | 申明变量fso
6 | 申明变量shtFirst
7 |
8 | 定义变量fso为FileSystemObject对象,用于对文件或者文件夹进行操作
9 | 定义工作表shtFirst,表示操作界面工作表
10 |
11 | With开始:使用FileDialog(msoFileDialogOpen)打开一个窗口
12 | 定义打开窗口标题为:选择文件
13 | 是否允许多选文件:是
14 | 清空文件选项
15 | 新增Excel文件,尾椎为xlsx的选项
16 | 可省略,应与filter联合使用,此处未发挥作用
17 | 初始打开位置为:当前文件下【1】输入文件夹
18 | 显示
19 |
20 | 循环开始:对于选择的文件进行遍历循环
21 | 定义变量longName为选择的文件
22 | 获取文件的名称
23 | 调用过程S0201_文件处理,变传递2个参数
24 | 循环结束
25 | With结束
26 |
27 | 工作表shtFirst的K3单元格赋值已点击
28 | End Sub
关键代码解读
1)第11-25行:With…End With,第11行至25行,等价为以下代码。目标在于重复的代码只需要写一次,了解即可,新手无需深究。
Set mso = Application.FileDialog(msoFileDialogOpen)
mso.Title = "选择文件"
mso.AllowMultiSelect = True
mso.Filters.Clear
mso.Filters.Add "Excel文件", "*.xlsx"
mso.FilterIndex = 2
mso.InitialFileName = ThisWorkbook.Path & "\" & "【1】输入"
mso.Show
For Each selectFile In mso.SelectedItems
longName = selectFile
shortName = fso.GetFile(longName).Name
Call S0201_文件处理(longName, shortName)
Next
2)第8行:Set fso = CreateObject("Scripting.FileSystemObject"),定义了一个文件系统对象。用来对文件和文件夹进行操作,例如获取文件名称等。对于很多常见操作,如文件操作、字典操作等,VBA提供了一些工具包,通过引用这些工具包就可以使用,大大提升工作效率。
关于工具包的引用有两种方法,一种通过代码的方式,如本文中所示。另外通过菜单工具-引用,如图3-18所示。
在弹出的窗口中勾选Microsoft Scripting Runtime,如图3-19所示。另外需要在代码中定义fso,然后就可以使用相关功能。推荐使用第一种方法,这样将程序发给其他人的时候可以直接使用。第二中方法,当程序文件发送给另外人员使用时,也许要使用人员的电脑上在VBE界面中操作绑定。shortName = fso.GetFile(longName).Name,通过该方式获取文件的名称。
Dim fso As New Scripting.FileSystemObject
3)第11行: Application.FileDialog(msoFileDialogOpen)。目标在于打开选择文件的窗口。包括以下常用属性,实际效果如图3-20
Title,窗体名称AllowMultiSelect,是否允许多选Filters.Add,支持选择的文件格式InitialFileName,默认打开的位置SelectedItems,已选中的文件
若希望支持多种文件的选择,.Filters.Add "Excel文件/txt文件", "*.xlsx;*.txt",修改Filters.Add后面的内容即可,不同格式间用;隔开。
4)第17行:ThisWorkbook.Path,获取当前Excel文件所在文件夹地址



