vba - 文件对话框不起作用

标签 vba ms-access ms-access-2010

我看了很紧张,但找不到直接解决我的问题的帖子。

我创建的表单的以下代码适用于我在工作中使用的 Access 2003。

Dim FileName As FileDialog
Set FileName = Application.FileDialog(msoFileDialogFilePicker)
Dim Name As Variant

With FileName
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then
    MsgBox "No file selected."
    Exit Sub
    End If
End With

For Each Name In FileName.SelectedItems
FileNameTextBox.Text = Mid$(Name, InStrRev(Name, "\") + 1)
Next Name

但是,当我尝试在个人计算机上的 Access 2010 中的表单上运行相同的代码时,它不起作用。错误消息突出显示了第一行并显示“未定义用户定义的类型”。我也尝试声明 FileName as Office.FileDialog ,但也没有运气。我确实有 Microsoft Access 14.0 Object Library 作为正在使用的引用之一,所以我不知道这有什么问题。

我只使用 Access 两个星期,我所有的知识都来自谷歌搜索,所以我很可能遗漏了一些明显的东西。

最佳答案

FileDialog对象不是由 Access 库提供的,而是由 Office 库提供的。因此,如果您设置对 Microsoft Office [版本号] 对象库的引用,您的代码应该可以工作。要么你没有那个引用集,要么它坏了。

但是,如果是我,我会不设置引用并像这样修改代码。看看它是否适合你。

Const msoFileDialogFilePicker As Long = 3
Dim objDialog As Object

Set objDialog = Application.FileDialog(msoFileDialogFilePicker)

With objDialog
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count = 0 Then
        MsgBox "No file selected."
    Else
        Me.FileNameTextBox.Value = Dir(.SelectedItems(1))
    End If
End With

关于vba - 文件对话框不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9476268/

相关文章:

vba - 将 Variant 设置为集合项总是返回错误

vba - 为什么 VBE.ActiveCodePane.CodeModule 在 VBE(代码窗口)未打开时不起作用?

ms-access - 如何在 MS Access 表单中进行响应式设计?

sql - 将查询中的数据插入表时,查询是否针对插入的每条记录运行?

excel - VBA Countif 大写

VBA EXCEL代码: Current Stock Price

html - 使用VBA从网站中抓取innerHTML

mysql - 大公司的Access或者MySQL

ms-access - 如何持续开发和部署 Access 2010 数据库应用程序

sql - 将 4 个表中的数据合并到一列/字段中