在 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?