6

在 Access 2016 中,我希望显示“文件打开”对话框,允许用户选择要导入的 CSV 文件。但是,正在生成与该行相关的错误Dim FD as Office.FileDialog-

编译错误:未定义用户定义类型

以下代码已从MSDN上发布的示例中复制(并稍作编辑) 。此示例被列为与 Office 2013 及更高版本相关,但代码中的第一个注释(与变量类型Office.FileDialog 相关)似乎与此相矛盾 -

需要参考 Microsoft Office 11.0 对象库。

当然,对于 Office 2013,您需要参考 MS Office 15 对象库,然后是未来版本(例如 2016)的相应版本库?

但无论如何,在 Access 2016 中没有对 Microsoft Office 11.0 对象库的引用。但是,其中包含对Microsoft Access 16.0 Object Library的引用。

如何让文件打开对话框显示?

Function SelectFile(Optional ByVal title As String = "Please select a file", _
                    Optional ByVal allowMultiSelect As Boolean = False) As Variant

    Dim FD As Office.FileDialog
    Dim file As Variant

    Set FD = Application.FileDialog(msoFileDialogFilePicker)

    With FD

        .title = "Please select a file"         ' Add the dialog title
        .allowMultiSelect = allowMultiSelect    ' Set whether or not to allow multiple file selection

        .filters.Clear                      ' Clear any existing filters
        .filters.Add "CSV Files", "*.csv"   ' Add new filters

        '**
         ' Show the dialog to the user
         '*
        If .Show = True Then

            For Each file In .selectedItems  ' Grab the path/name of the selected file
                SelectFile = file
            Next

        Else
            SelectFile False
        End If

   End With

   Set FD = Nothing    ' Clean up the FD variable

End Function

这是我目前选择的参考资料——

选定的参考文献

这里是可用的 MS Office 参考(没有参考Microsoft Office 16.0 对象库) -

可用的 MS Office 参考资料

4

3 回答 3

15

对于遇到相同问题的任何人,您需要选择与“Microsoft Access 16.0 对象库”不同的“Microsoft Office 16.0 对象库”

于 2017-05-01T21:56:04.470 回答
8

我不知道为什么Microsoft Office [版本] 对象库未显示在可用参考中。但是,如果您切换到后期绑定,则不需要它。

Const msoFileDialogFilePicker As Long = 3
'Dim FD As Office.FileDialog
Dim FD As Object
Dim file As Variant
Set FD = Application.FileDialog(msoFileDialogFilePicker)

稍后,您需要决定在这里做什么......

For Each file In .selectedItems  ' Grab the path/name of the selected file
    SelectFile = file
Next

当您使用AllowMultiSelect = True运行该代码并选择多个文件时,SelectFile将仅包含最后一个文件。

于 2016-02-22T14:54:16.520 回答
0

在 Office 2016 中,引用窗口中缺少“Microsoft Office 16.0 对象库”。我遇到的主要问题是确定 dll 文件的位置和名称。

最后我找到了完整的文件路径,我想这对于任何用户来说都是一样的,因为我相信它是一个默认目录:

"C:\Program Files\Microsoft Office\Root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.dll"

我花了 1 个小时才找到这条路径,以便创建文件对话框!

于 2017-08-22T10:22:07.803 回答