在Access 2016中,我希望显示文件打开对话框,允许用户选择要导入的CSV文件。但是,与行Dim FD as Office.FileDialog
-
编译错误:未定义用户定义的类型
以下代码已从the example posted on 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对象库的引用,包括在内。
如何显示文件打开对话框?
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 referencs(没有参考 Microsoft Office 16.0对象库) -
答案 0 :(得分:7)
对于遇到相同问题的任何人,您需要选择' Microsoft Office 16.0对象库'与Microsoft 访问 16.0对象库'
不同答案 1 :(得分:5)
我不知道为什么 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
将仅包含最后一个文件。
答案 2 :(得分:0)
在办公室2016中,引用窗口中缺少“Microsoft Office 16.0对象库”。 我遇到的主要问题是确定dll文件的位置和名称。
最后我找到了完整的文件路径,我想这对任何用户都是一样的,因为我相信它是一个默认目录:
“C:\ Program Files \ Microsoft Office \ Root \ VFS \ ProgramFilesCommonX86 \ Microsoft Shared \ OFFICE16 \ MSO.dll”
我花了1个小时才找到这条路径,所以我可以创建文件对话框!