vba 中的 OpenFileDialog 以字符串形式返回目录

Posted

技术标签:

【中文标题】vba 中的 OpenFileDialog 以字符串形式返回目录【英文标题】:OpenFileDialog in vba that returns the directory as a string 【发布时间】:2013-04-12 12:37:41 【问题描述】:

我一直在到处寻找,我很惊讶这在 VBA 中还不容易作为一个函数使用。

我需要一个函数,当被调用时,它会打开一个文件对话框,人们可以在其中选择 1 个文件(不是更多,只有 1 个),然后该函数将文件的位置(包括文件名+扩展名)作为字符串返回。

起初我想:“这有多难,我在 VB.NET 中真的很简单..”

提前致谢!

【问题讨论】:

【参考方案1】:

你的意思是像htis?

Sub Sample()
    Dim ofD As Object
    Dim Fil

    Set ofD = Application.FileDialog(3)

    ofD.AllowMultiSelect = False
    ofD.Show

    For Each Fil In ofD.SelectedItems
        MsgBox Fil
    Next
End Sub

如果AllowMultiSelectTrue,则上述For 循环很有用

如果只有一个文件,这是另一个示例。

Sub Sample()
    Dim ofD As Object
    Dim Fil

    Set ofD = Application.FileDialog(3)

    ofD.AllowMultiSelect = False

    If ofD.Show = False Then
        MsgBox "User Pressed Cancel"
    Else
        MsgBox ofD.SelectedItems(1)
    End If
End Sub

【讨论】:

你能解释一下“3”和“1”代表什么吗? 很抱歉没有参加客户见面会。我相信这个链接会回答你所有的问题? msdn.microsoft.com/en-us/library/office/…? 您将如何执行此操作以选择文件夹?【参考方案2】:

本周早些时候我遇到了同样的问题,我使用的解决方案在这里。

http://www.mrexcel.com/forum/excel-questions/294728-browse-folder-visual-basic-applications.html

希望对你也有帮助。

【讨论】:

这似乎可以工作,除了我收到一个错误,即“Dim fldr As fileDialog”中的“Filedialog”不是现有类型.. 该解决方案使用早期绑定,因此需要您为 Microsoft Office [version] Object Library 设置引用。

以上是关于vba 中的 OpenFileDialog 以字符串形式返回目录的主要内容,如果未能解决你的问题,请参考以下文章

OpenFileDialog 在超过 260 个字符的路径上返回空字符串(或根本不返回)

Access 2003 - VBA - 加入两种类型(字符串 = 日期)

Vba 字符串中的引号“ 怎样处理

C# - 如何自定义 OpenFileDialog 以选择多个文件夹和文件?

如何在excel vba中传递包含excel文件路径的字符串以访问vba

将过滤器设置为 OpenFileDialog 以允许典型的图像格式?