如何从 VBA 中的文件对话框对象中获取单个文件名(对于 MS Access 2007)?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2158675/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I get a single file name out of a File Dialog object in VBA (for MS Access 2007)?
提问by Christopher Bottoms
How do I change my code to get the file name instead of the directory name? openDialog.InitialFilenamegives me the directory name.openDialog.FileNamegives me the error "Method or data member not found".
如何更改我的代码以获取文件名而不是目录名?openDialog.InitialFilename给我目录名。openDialog.FileName给我错误“找不到方法或数据成员”。
Private Sub btnEditPhoto_Click()
If (txtImageName > "") Then
Application.FollowHyperlink txtImageName
Else
Dim openDialog As Office.FileDialog
Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Files", "*.jpg"
Dim pickedFile As Boolean
pickedFile = openDialog.Show
If pickedFile Then
txtImageName.SetFocus
txtImageName.Text = openDialog.InitialFileName
End If
End If
End Sub
回答by Fionnuala
You want:
你要:
OpenDialog.SelectedItems.Item(1)
In place of:
代替:
OpenDialog.InitialFileName
As you have not allowed multiselect.
因为你没有允许多选。
So:
所以:
''Reference Microsoft Office x.x Object Library
Dim openDialog As Office.FileDialog
Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Files", "*.jpg"
If openDialog.Show Then
''SelectedItems is not zero based
''Do not use .Text property in MS Access except
''in special cases, then you will not have to set focus
''txtImageName.SetFocus
txtImageName = openDialog.SelectedItems(1)
End If
If AllowMultiSelect is used, you need to iterate through SelectedItems
如果使用 AllowMultiSelect,则需要遍历 SelectedItems
''Reference Microsoft Office x.x Object Library
Dim openDialog As Office.FileDialog
Dim i As Integer
Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
'Use ctl or shift + click to select more than one file
openDialog.AllowMultiSelect = True
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Files", "*.jpg"
If openDialog.Show Then
For i = 1 To openDialog.SelectedItems.Count
Imagelst = Imagelst & ";" & openDialog.SelectedItems(i)
Next
End If
回答by Askjerry
I needed to select a single text file... this is what I did... it worked fine.
我需要选择一个文本文件......这就是我所做的......它工作正常。
' Get the File
'----------------------------------------------------------
Dim dialog As Object
Dim pickedfile As Boolean
Dim myfile As String
Set dialog = Application.FileDialog(msoFileDialogFilePicker)
With dialog
.AllowMultiSelect = False
.Title = "Please pick the file to convert."
.Filters.Clear
.Filters.Add "Text Files", "*.TXT"
.Filters.Add "All Files", "*.*"
pickedfile = False
pickedfile = .Show
If pickedfile Then
myfile = .SelectedItems.Item(1)
End If
End With
'----------------------------------------------------------
Additionally... you can replace the dialog type with...
另外...您可以将对话框类型替换为...
Set dialog = Application.FileDialog(msoFileDialogOpen)
and it worked equally well.
而且效果也一样好。
回答by NAsif
Private Sub Command135_Click()
Dim dialog As Object
Dim pickedfile As Boolean
Dim myfile As String
Set dialog = Application.FileDialog(1)
With dialog
.AllowMultiSelect = False
.Title = "Please pick the file to convert."
.Filters.Clear
.Filters.Add "Picture Files", "*.Jpg"
.Filters.Add "All Files", "*.*"
pickedfile = False
pickedfile = .Show
If pickedfile Then
myfile = .SelectedItems.Item(1)
End If
End With
Me.Form.Picture = myfile
End Sub
Command_135=Button Name
Me.Form.Picture = "The Control Name"

