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

lal*_*hka 5 ms-access vba access-vba

我看到这个主题如何在Access 2007 VBA中显示"打开文件"对话框?我喜欢那里没有使用引用的解决方案,但是,我无法弄清楚如何显示用户选择的文件路径.有人可以解释一下

非常感谢你

这是我正在谈论的那篇文章

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

Cod*_*ray 6

首先要做的事情是:你应该总是喜欢尽可能使用强类型变量.在这种情况下,您可以替换ObjectOffice.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
Run Code Online (Sandbox Code Playgroud)

请注意FileDialog,如果需要自定义,还可以设置其他属性.例如,该.Title属性允许您指定将在标题栏中显示为对话框标题的标题.您还可以使用该.Filter属性指定过滤器,这将限制用户在对话框中可以查看和选择的文件类型.例如,如果要将选项限制为仅限Access数据库,则可以添加以下代码:

' Clear out the current filters
f.Filters.Clear

' Add a few custom filters
f.Filters.Add "Access Databases", "*.mdb"
f.Filters.Add "All Files", "*.*"
Run Code Online (Sandbox Code Playgroud)

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