ExcelVBA文件操作-打开对话框取得文件夹路径2种方法

2023-02-24 08:36:25 浏览数 (1)

ExcelVBA-打开对话框取得文件夹路径2种方法

Excel VBA自动化处理文件时,通常有这样的操作:

(1)打开文件对话框==>

(2)选中文件夹==>

(3)确定==>

(4)返回文件夹路径==>

(5)读取文件夹中的所有文件==>

(6)再进行其他操作

今天来学习其中的(1)-(4)

共有两种方式:

一、Application.FileDialog

语法:expression.FileDialog (fileDialogType)

MsoFileDialogType 可为下述常量之一:

msoFileDialogFilePicker。 允许用户选择文件。

msoFileDialogFolderPicker。 允许用户选择文件夹。

msoFileDialogOpen。 允许用户打开文件。

msoFileDialogSaveAs。 允许用户保存文件。

其中msoFileDialogFolderPicker就是用于打开文件夹的

【代码】

Sub FileDialog_sample1()

With Application.FileDialog(msoFileDialogFolderPicker)

.InitialFileName = ThisWorkbook.Path

.Title = "选择文件夹"

If .Show = True Then

Range("B1") = .SelectedItems(1) & ""

Else

MsgBox "你选择了“取消”"

End If

End With

End Sub

【效果】

二、Shell.Application之BrowseForFolder

语法:set obj=CreateObject("Shell.Application").BrowseForFolder(s1, s2, s3, s4)

第一个为对话框的窗体句柄,一般设置为0;

第二个为打开窗体的说明,如上图中的“请选择上传文件夹”;

第三个参数控制打开的窗口中显示的内容以及窗体中某些元素的状态,如不显示“新建文件夹”;

第四个参数为可选参数,只要控制对话框中文件系统的根目录。缺省值为 0 指“桌面”。

如果设置了其他数据,将不能再打开其他文件夹,所以建议设置为0

【代码】

Sub yhd_BrowseFolders()

Dim objshell As Object

Dim objFolder As Object

Set objshell = CreateObject("Shell.Application") '后期绑定Shell.Application

'弹出对话框

Set objFolder = objshell.BrowseForFolder(0, "请选择文件夹", 0, 0)

If Not objFolder Is Nothing Then

Path = objFolder.Self.Path & ""

Else

MsgBox "未选择文件夹,将退出"

Exit Sub

End If

Range("B1") = Path

Set objFolder = Nothing

Set objshell = Nothing

End Sub

【效果】

0 人点赞