我將如何去顯示訪問2007 VBA中的打開文件(或文件選擇)對話框?如何在Access 2007 VBA中顯示「打開文件」對話框?
我已經嘗試使用Application.GetOpenFileName,因爲我會在Excel中,但該函數不存在於Access中。
我將如何去顯示訪問2007 VBA中的打開文件(或文件選擇)對話框?如何在Access 2007 VBA中顯示「打開文件」對話框?
我已經嘗試使用Application.GetOpenFileName,因爲我會在Excel中,但該函數不存在於Access中。
我對Renaud Bompuis的回答的評論搞砸了。
實際上,您可以使用後期綁定,並且不需要對11.0對象庫的引用。
下面的代碼將工作沒有任何參考資料:
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
f.Show
MsgBox "file choosen = " & f.SelectedItems.Count
注意上面的作品以及在運行時也。
在Access 2007中,您只需使用Application.FileDialog
。
下面是訪問文檔的例子:
' Requires reference to Microsoft Office 12.0 Object Library. '
Private Sub cmdFileDialog_Click()
Dim fDialog As Office.FileDialog
Dim varFile As Variant
' Clear listbox contents. '
Me.FileList.RowSource = ""
' Set up the File Dialog. '
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
' Allow user to make multiple selections in dialog box '
.AllowMultiSelect = True
' Set the title of the dialog box. '
.Title = "Please select one or more files"
' Clear out the current filters, and add our own.'
.Filters.Clear
.Filters.Add "Access Databases", "*.MDB"
.Filters.Add "Access Projects", "*.ADP"
.Filters.Add "All Files", "*.*"
' Show the dialog box. If the .Show method returns True, the '
' user picked at least one file. If the .Show method returns '
' False, the user clicked Cancel. '
If .Show = True Then
'Loop through each file selected and add it to our list box. '
For Each varFile In .SelectedItems
Me.FileList.AddItem varFile
Next
Else
MsgBox "You clicked Cancel in the file dialog box."
End If
End With
End Sub
由於樣本說,只要確保你的的Microsoft Access 12.0對象庫引用(下VBE IDE>工具>參考菜單)。
實際上,您可以使用後期綁定,並且不需要對11.0對象庫的引用。 下面的代碼將工作,而無需任何的引用: 昏暗˚F作爲對象 集合F = Application.FileDialog(3) f.AllowMultiSelect =真 f.Show MSGBOX 「文件choosen =」 &f.SelectedItems .Count 請注意,以上運作良好,我的運行時也。 Albert D.Kallal 埃德蒙頓,加拿大 [email protected] – 2009-07-09 02:25:50
該示例從這裏複製:http://support.microsoft.com/en-us/kb/824272 – Mike 2015-04-08 02:40:18
加入到什麼艾伯特已經表示:
此代碼(各種樣品的混搭)提供有一個另存爲對話框
Function getFileName() As String
Dim fDialog As Object
Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
Dim varFile As Variant
With fDialog
.AllowMultiSelect = False
.Title = "Select File Location to Export XLSx :"
.InitialFileName = "jeffatwood.xlsx"
If .Show = True Then
For Each varFile In .SelectedItems
getFileName = varFile
Next
End If
End With
End Function
我同意約翰·M有最好的答案OP的能力題。思想沒有明確說明,明顯的目的是得到一個選定的文件名,而其他答案返回計數或列表。不過,我想補充一點,在這種情況下,msofiledialogfilepicker可能是更好的選擇。即:
Dim f As object
Set f = Application.FileDialog(msoFileDialogFilePicker)
dim varfile as variant
f.show
with f
.allowmultiselect = false
for each varfile in .selecteditems
msgbox varfile
next varfile
end with
注:varfile的值將保持不變,因爲多選是假的(只有一個項目是不斷選擇)。我在循環之外使用了它的價值,同樣成功。不過,John M所做的做法可能更好。此外,文件夾選取器可用於獲取選定的文件夾。我總是喜歡後期綁定,但我認爲該對象是原生默認訪問庫,所以它可能沒有必要在這裏
我有一個類似的解決方案,以上,它適用於打開,保存,文件選擇。我將它粘貼到它自己的模塊中,並用在我創建的所有Access數據庫中。如代碼所述,它需要Microsoft Office 14.0 Object Library。我想是另一種選擇:
Public Function Select_File(InitPath, ActionType, FileType)
' Requires reference to Microsoft Office 14.0 Object Library.
Dim fDialog As Office.FileDialog
Dim varFile As Variant
If ActionType = "FilePicker" Then
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
' Set up the File Dialog.
End If
If ActionType = "SaveAs" Then
Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
End If
If ActionType = "Open" Then
Set fDialog = Application.FileDialog(msoFileDialogOpen)
End If
With fDialog
.AllowMultiSelect = False
' Disallow user to make multiple selections in dialog box
.Title = "Please specify the file to save/open..."
' Set the title of the dialog box.
If ActionType <> "SaveAs" Then
.Filters.Clear
' Clear out the current filters, and add our own.
.Filters.Add FileType, "*." & FileType
End If
.InitialFileName = InitPath
' Show the dialog box. If the .Show method returns True, the
' user picked a file. If the .Show method returns
' False, the user clicked Cancel.
If .Show = True Then
'Loop through each file selected and add it to our list box.
For Each varFile In .SelectedItems
'return the subroutine value as the file path & name selected
Select_File = varFile
Next
End If
End With
End Function
+1始終希望這是可能的,關鍵是要使後期的綁定工作是通過數字選項,而不是msoOpenFileDialog等。這麼簡單但很好的答案:) – 2012-07-26 19:48:14