2010-01-28 71 views
5

如何更改我的代码以获取文件名而不是目录名? openDialog.InitialFilename给我的目录名称。
openDialog.FileName给我错误“未找到方法或数据成员”。如何从VBA中的文件对话框中获取单个文件名(适用于MS Access 2007)?

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 
+0

这是一种令人困惑的编辑问题以合并答案,因为在这一点上,你的代码做你要求的帮助。 – 2010-01-29 19:46:30

回答

11

你想:

OpenDialog.SelectedItems.Item(1) 

在地方:

OpenDialog.InitialFileName 

由于您没有允许多选。


所以:

''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 

如果使用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 
+0

非常感谢!现在它的工作。 – 2010-01-28 23:41:50

1

我需要选择一个文本文件进行迭代...这是我做过什么...它工作得很好。

' 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 
'---------------------------------------------------------- 

此外...你可以替换对话框中,键入与...

Set dialog = Application.FileDialog(msoFileDialogOpen) 

和它的工作同样出色。

0
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" 
+0

简要说明您发布的代码,以便对其他人有所帮助。 – Rakesh 2013-03-13 15:26:44

相关问题