在 Access VBA 中使用浏览文件对话框

Posted

技术标签:

【中文标题】在 Access VBA 中使用浏览文件对话框【英文标题】:Using the browse for file dialog in Access VBA 【发布时间】:2011-01-27 07:00:48 【问题描述】:

我看到了这个主题How to show "Open File" Dialog in Access 2007 VBA?,我喜欢那里不使用引用的解决方案,但是,我不知道如何显示用户选择的文件路径。谁能解释一下

非常感谢

这就是我要说的部分

Dim f As Object   
Set f = Application.FileDialog(3)   
f.AllowMultiSelect = True   
f.Show    
MsgBox "file choosen = " & f.SelectedItems.Count

【问题讨论】:

你说的是文件路径。但是您启用了多选。您想要所有文件所在的文件夹路径吗? 我在我的版本中禁用了它,这是别人的代码,在我的版本中,它将一次只有一个文件,因为必须对文件进行处理。 How to show "Open File" Dialog in Access 2007 VBA?的可能重复 这不是重复的,我的问题是基于该主题(如原帖中所述)。如果我应该在该主题中发布我的问题 - 那么我道歉,我下次会这样做,而不是开始一个新的。 【参考方案1】:

第一件事:您应该始终尽可能使用强类型变量。在这种情况下,您可以将Object 替换为Office.FileDialog

要显示每个选定文件的路径,您需要遍历SelectedItems 集合。例如,您将添加以下代码:

Dim f As Office.FileDialog
Set f = Application.FileDialog(3)   
f.AllowMultiSelect = True

' Show the dialog. If the method returns True, the user picked at least one file.
' If the method returns False, the user clicked Cancel.
If f.Show Then
    MsgBox f.SelectedItems.Count & " file(s) were chosen."

    ' Display the full path to each file that was selected
    Dim i As Integer
    For i = 1 To f.SelectedItems.Count
        MsgBox f.SelectedItems(i)
    Next i
End If

请注意,如果您需要自定义,FileDialog 还具有您可以设置的其他属性。例如,.Title 属性允许您指定一个标题,该标题将作为对话框的标题出现在标题栏中。您还可以使用.Filter 属性指定过滤器,这将限制用户能够在对话框中查看和选择的文件类型。例如,如果您想将选择限制为仅访问数据库,您可以添加以下代码:

' Clear out the current filters
f.Filters.Clear

' Add a few custom filters
f.Filters.Add "Access Databases", "*.mdb"
f.Filters.Add "All Files", "*.*"

【讨论】:

@Cody Gray FileDialog 可以在后期绑定中正常工作。 Dim f As Object 不需要设置对 Microsoft Office 对象库的引用。 我个人建议使用早期绑定来编写和测试代码,但我认为最好使用后期绑定进行部署。只是我的 2 美分。 我断然拒绝对除默认的 3 Access 引用、Access、VBA 和 DAO 之外的任何内容进行早期绑定。其他任何事情都会在部署中带来麻烦(特别是如果您正在分发 MDE/ACCDE 前端)。如果您每次使用外部组件时都重新初始化,后期绑定会更慢,但是可以通过将***对象缓存在 STATIC 变量中来避免这种情况(因此它在您第一次使用时被初始化并在其余部分中保持可用会议)。所以,我强烈不同意早期绑定的建议。 我是一名 Access 开发人员,并且已经看到分发具有早期绑定的应用程序所带来的所有问题,而不是基本的 3 引用。后期绑定对于分发来说更加可靠。任何有经验的 Access 开发人员都会告诉您这一点 - 这是您确保您的应用程序在安装在大量不同的机器(例如,使用不同版本的 Office)时不会中断的方式。任何建议提前绑定的人都可能不是 Access 开发人员。 我也想知道在VBScript中使用早期绑定和强类型的秘诀。

以上是关于在 Access VBA 中使用浏览文件对话框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用文件对话框将文件路径保存在字符串中,使用 Access VBA?

从 Access 2010 VBA 打开 Excel 2010 文件

MS Access VBA 文件对话框崩溃

使用 MS Access VBA 更改标签的默认标题

如何让我的浏览对话框转到 VBA 中的特定文件夹?

在 MS Access/VBA 中使用 ADO 连接对话框