自定义的常用的公式、函数汇总 [不定期更新]
快捷调用文件对话框
介绍:以下定义了一个函数,方便调用文件对话框的操作。
如果想查看具体的VBA中文件对话框的操作,请转到此文章查看 VBA 文件对话框
函数语法:
value=GetFileDialogValue(Open_Save_selFile_selFloder [,InitialFileName] [,SortingFileType [,IndtxInStorting]] [,AllowMultiSelect] [,ExitOnCancel] )
参数 | 可选/必须 | 类型 | 说明 |
---|---|---|---|
Open_Save_selFile_selFloder | 必须 | byte | 对话框类型,1~4 分别为 打开、保存、选择文件、选择文件夹 |
InitialFileName | 可选 | String | 调取对话框时,打开的地址。默认为当前激活文件的地址。 |
SortingFileType | 可选 | 数组 | 可供筛选的文件类型列表,Open_Save_selFile_selFloder 为 1、3时,可以选择设置。数组并非默认的变量类型,但此变量应当带入一个 多行3列的数组。每一行的格式应当为:Descriptions, Extensions, [Position], 'eg: “Images”, “*.gif; *.jpg; *.jpeg”, 1 |
IndtxInStorting | 可选 | Integer | 对话框默认显示的筛选类型,当设置了SortingFileType 时可选择设置,默认值为1。 |
AllowMultiSelect | 可选 | Boolean | 设置是否允许多选,默认为 False=禁止 |
ExitOnCancel | 可选 | Boolean | '当点击了取消按钮或者关闭对话框时,是否终止整个程序(主程序)。默认为 True=终止 |
'======================================================================================================================
'调用文件夹对话框 ====================================================================================================
Function GetFileDialogValue_(Open_Save_selFile_selFloder As Byte, _
Optional InitialFileName As String, _
Optional SortingFileType = Empty, _
Optional IndtxInStorting As Integer = 1, _
Optional AllowMultiSelect As Boolean = False, _
Optional ExitOnCancel As Boolean = True)
'Open_Save_selFile_selFloder 必选 模式,1~4分别为 打开文件、保存文件、选择文件、选择文件夹
'InitialFileName 可选 调取对话框时,显示的地址。当参数省略,默认为当前激活文件的地址。
'SortingFileType 可选 可供筛选的文件类型列表,只针对模式1、3。
' 应当为多行3列的数组,每一行的格式应当为:Descriptions, Extensions, [Position],分别为 显示名称,实际筛选的扩展名,顺序'eg: "Images", "*.gif; *.jpg; *.jpeg"
'IndtxInStorting 可选 默认显示的筛选类型,当设置了筛选的文件类型列表时需要设置,若未设置则默认为第一个类型。
'AllowMultiSelect 可选 设置是否允许多选,默认为False=禁止
'ExitOnCancel 可选 当点击了取消按钮或者关闭对话框时,是否终止整个程序(主程序)。默认为 True=终止
Dim fd As FileDialog
Dim SelectedFile, i%, sTitle$
Set fd = Application.FileDialog(Open_Save_selFile_selFloder) '设置对话框的类型
With fd
If InitialFileName = "" Then InitialFileName = ActiveWorkbook.Path '如果没有设定默认地址变量,则将变量地址设置为当前激活文件的地址
If Right(InitialFileName, 1) <> "\" Then InitialFileName = InitialFileName & "\"
.InitialFileName = InitialFileName '设置调用对话框时的地址
.AllowMultiSelect = AllowMultiSelect '设置是否允许多选
If AllowMultiSelect Then sTitle = "(可以多选)" Else sTitle = "(单选)"
'当 Open_Save_selFile_selFloder 参数为1或3时,即对话框为 打开、选择文件 类别时,执行以下,设置文件的类型筛选
If Open_Save_selFile_selFloder = 1 Or Open_Save_selFile_selFloder = 3 Then
If Not IsEmpty(SortingFileType) Then '如果筛选参数 SortingFileType 不为空,则遍历将其写入筛选列表
.Filters.Clear '清除现有的文件类型
For i = LBound(SortingFileType) To UBound(SortingFileType) '遍历将筛选参数写入筛选列表
.Filters.Add SortingFileType(i, 1), SortingFileType(i, 2), SortingFileType(i, 3) '添加筛选列表
Next i
.FilterIndex = IndtxInStorting '默认显示的 “文件筛选类型”
End If
End If
Select Case Open_Save_selFile_selFloder '设置打开文件时的标题
Case 1: .Title = "请选择要打开的文件" & sTitle
Case 2: .Title = "请输入要保存的文件名及对对应的文件类型"
Case 3: .Title = "请选择对应的文件" & sTitle
Case 4: .Title = "请选择对应的文件夹"
End Select
If .Show = -1 Then '如果显示了窗体并选择了确认
Select Case Open_Save_selFile_selFloder '根据按钮设置执行操作
Case 1, 2
.Execute '执行 打开或保存
Case 3
ReDim SelectedFile(1 To .SelectedItems.Count) '重新定义数组
For i = 1 To .SelectedItems.Count '遍历所有选择的文件
SelectedFile(i) = .SelectedItems(i) '将文件名及地址赋值给数组
Next i
Case 4
SelectedFile = .SelectedItems(1) '将文件名及地址赋值给参数
End Select
GetFileDialogValue_ = SelectedFile ' >>>>> 设置返回值
Else '如果取消或者关闭了窗体
If ExitOnCancel Then Set fd = Nothing: End '如果设置了参数为 True(默认值),终止程序
End If
End With
Set fd = Nothing '清空对象
End Function
获取文件夹中的文件列表
介绍:以下定义了一个函数,用于获取指定文件下的文件列表。
函数语法:
FileList = GetFilesList_(sFilePath, sRegexp_Pattern [,bSubfolder] [,bPath] [,aNotSetMe] )
参数 | 可选/必须 | 类型 | 说明 |
---|---|---|---|
sFilePath | 必须 | String | 要获取文件列表的文件地址 |
sRegexp_Pattern | 必须 | String | 要获取文件列表的模式,用正则表达式 |
bSubfolder | 可选 | Boolean | 是否返回子文件夹中的文件列表,默认 False=不返回 |
bPath | 可选 | Boolean | 返回的文件列表是否包含完整的文件路径,默认 True=包含路径 |
bExtension | 可选 | Boolean | 返回的文件名是否包含扩展名,默认 True=包含扩展名 |
aNotSetMe | 可选 | Empty | 该参数作物存储列表的中间变量 请勿设置该参数,直接使用参数的默认值即可。 |
'=========================