VBA Excel获取文件路径(以文件夹结尾)

Jes*_*mon 11 excel file-io vba

从上一个问题我知道如何让用户点击"浏览器"按钮并导航到他们可能想要打开的特定文件.

码:

Private Sub CommandButton2_Click()
    Dim vaFiles As Variant

    vaFiles = Application.GetOpenFilename()

    ActiveSheet.Range("B9") = vaFiles
End Sub
Run Code Online (Sandbox Code Playgroud)

我想创建第二个浏览器按钮,让用户导航到一个文件夹.该文件夹将保存.pdf我的程序创建的文件.这是问题所在:GetOpenFilename要求用户单击文件.如果文件夹中没有文件,那么用户无法做任何事情.

我希望这很清楚......

谢谢

chr*_*sen 24

使用Application.FileDialog对象

Sub SelectFolder()
    Dim diaFolder As FileDialog
    Dim selected As Boolean

    ' Open the file dialog
    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
    diaFolder.AllowMultiSelect = False
    selected = diaFolder.Show

    If selected Then
        MsgBox diaFolder.SelectedItems(1)
    End If

    Set diaFolder = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)


小智 5

已经为此添加了ErrorHandler,以防用户点击取消按钮而不是选择文件夹.因此,您不会收到可怕的错误消息,而是会收到一条消息,指出必须选择一个文件夹然后例程结束.下面的代码还将文件夹路径存储在范围名称中(它只链接到工作表上的单元格A1).

Sub SelectFolder()

Dim diaFolder As FileDialog

'Open the file dialog
On Error GoTo ErrorHandler
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Title = "Select a folder then hit OK"
diaFolder.Show
Range("IC_Files_Path").Value = diaFolder.SelectedItems(1)
Set diaFolder = Nothing
Exit Sub

ErrorHandler:
Msg = "No folder selected, you must select a folder for program to run"
Style = vbError
Title = "Need to Select Folder"
Response = MsgBox(Msg, Style, Title)

End Sub
Run Code Online (Sandbox Code Playgroud)

  • FileDialog 的“.Show”方法返回“TRUE”(如果用户选择了一个或多个文件)或“FALSE”(如果用户单击取消按钮或关闭窗口) (2认同)