2016-02-22 121 views
3

在Access 2016中,我希望顯示文件打開對話框,允許用戶選擇要導入的CSV文件。然而,相對於正在生成到線路Dim FD as Office.FileDialog錯誤 - 從the example posted on MSDN'FileDialog'類型未在MS Access中定義

Compile error: User-defined type not defined

在下面的代碼已經被拷貝(和略編輯)。這個例子被列爲相關的Office 2013及更高版本,但在代碼中(相對於變量類型Office.FileDialog)的第一個評論,似乎contridict本 -

Requires reference to Microsoft Office 11.0 Object Library.

當然了Office 2013您是否需要引用MS Office 15對象庫,然後爲未來的版本提供相應的版本庫,例如2016?

但無論如何,在Access 2016中都沒有提及Microsoft Office 11.0 Object Library。然而,對於包括在內的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 

這裏是我當前所選擇的參考 -

Selected references

這裏是可用的MS Office referencs(無refernece到的Microsoft Office 16.0對象庫) -

Available MS Office references

回答

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 =代碼真,和選擇多個文件,SelectFile將只包含最後一個。

+1

謝謝,這是有效的。我想這只是2016年出現的問題!我明白你的意思是關於多個文件選擇。我想我會刪除該選項並默認設置爲「false」,因爲在這種情況下它不是必需的(我只是嘗試一個轉發計劃)。 –

4

對於具有相同問題的人,你需要選擇「微軟辦公室 16.0對象庫」,這是不一樣的「微軟訪問 16.0對象庫」

0

在辦公室2016年「微軟辦公室16.0對象庫「缺少參考窗口。 我遇到的主要問題是確定dll文件的位置和名稱。

終於讓我找到完整的文件路徑,我想將是任何用戶相同的,因爲我相信這是一個默認的目錄:

「C:\ Program Files文件\的Microsoft Office \ ROOT \ VFS \ ProgramFilesCommonX86 \ Microsoft Shared \ OFFICE16 \ MSO.dll「

我花了1個小時才找到這個路徑,所以我可以創建文件對話框!