2016-02-25 45 views
1

我想使用MS Access VBA中的文件对话框来获取完整路径和文件名。使用FileDialog选择文件名

我想要做的是通过调用此函数打开按钮单击文件对话框。该函数应该返回从fieldialog中选择的完整路径和文件名。

我评论了循环部分,因为我只想选择单个文件。之后我选择一个文件

该函数返回一个错误Error: 0到目前为止,这是我的代码。

任何人都可以弄清楚什么是错的?

感谢

Public Function SelectTheFile() As String 

On Error GoTo SelectTheFile_ErrorHandler 

     Dim fDialog As Office.FileDialog 
     Dim varFile As Variant 

     Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 

     With fDialog 

      .AllowMultiSelect = False 
      .Title = "Please select one file" 

      If .Show = True Then 
       'For Each varFile In .SelectedItems 
        'SelectTheFile = varFile 
        'Debug.Print SelectTheFile 
       'Next 
       SelectTheFile = .SelectedItems(1) 
       Debug.Print SelectTheFile 
      Else 
       Debug.Print "Cancel" 
      End If 
     End With 

SelectTheFile_ErrorHandler: 
    Set fd = Nothing 
    MsgBox "Error " & Err & ": " & Error(Err) 

End Function 
+1

你只是缺少'退出功能之前退出功能'SelectTheFile_ErrorHandler:'之前'所以代码一直运行到最后。我不认为你需要'设置fd = Nothing' – snoopen

回答

2

代码总是到达SelectTheFile_ErrorHandler:部分的任何文件对话框结果

必须在该节

Public Function SelectTheFile() As String 

    On Error GoTo SelectTheFile_ErrorHandler 

      Dim fDialog As Office.FileDialog 
      Dim varFile As Variant 

      Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 

      With fDialog 

       .AllowMultiSelect = False 
       .Title = "Please select one file" 

       If .Show = True Then 
        'For Each varFile In .SelectedItems 
         'SelectTheFile = varFile 
         'Debug.Print SelectTheFile 
        'Next 
        SelectTheFile = .SelectedItems(1) 
        Debug.Print SelectTheFile 
       Else 
        Debug.Print "Cancel" 
       End If 
      End With 

      Exit Function '<==== exit here, otherwise code goes on to following section 

    SelectTheFile_ErrorHandler: 
     Set fDialog = Nothing 
     MsgBox "Error " & Err & ": " & Error(Err) 

    End Function 
+0

哇!犀利的眼光! – Wayne

1

尽量只使用这个:

Application.GetOpenFilename 

这对我的作品,并没有实际打开文件保存完整的文件路径。除非我想念你想要做的事情,否则更简单。在这里阅读更多的文档:https://msdn.microsoft.com/en-us/library/office/ff834966.aspx

+0

这真的很有帮助。我会说这也解决了我的问题,但我决定将答案授予下一个答案,因为他确实解释了为什么我在同一时间获得错误并解决问题。但我不得不承认,如果我事先知道这个方法,我应该用这个而不是我现在拥有的。非常感谢! – Wayne

相关问题