VBA msoFileDialogOpen 将文件名声明为路径

VBA msoFileDialogOpen declare filename as Path

我正在尝试使用 msoFileDialogOpen 检索用户选择的相应文件名。到目前为止,这是我笨拙的代码:

Public Sub Function3_FileExplorer()
'   Start File Explorer to select file containing data (simple GUI, much easier than coding vFileName)
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    If .Show Then
        Dim file As Variant
        For Each file In .SelectedItems
            .SelectedItems Path
    End If
End With
ErrorHandler:
MsgBox "Error detected" & vbNewLine & "Error" & Err.Number & Err.Line
    Err.Description , vbCritical, "Error Handler: Error " & Err.Number

End Sub

当我 运行 这个程序时,我收到错误消息:

Compile error:

Invalid use of property

我认为在这里使用 属性 .SelectedItems 是正确的做法,但我不确定如何获取该文件名并将其存储为变体。

编辑:修改后的代码(这是否符合我的要求?)

Public Sub Function3_FileExplorer()
Dim file As Variant
'   Start File Explorer to select file containing data (simple GUI, much easier than coding vFileName)
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    If .Show Then
        file = .SelectedItems(1)
        Path = file
    End If
End With
MsgBox file

Exit Sub
ErrorHandler:
MsgBox "Error detected" & vbNewLine & "Error" & Err.Number & _
       Err.Description, vbCritical, "Error Handler: Error " & Err.Number

End Sub

这基本上就是你想要的(不清楚你到底想用文件名做什么):

Public Sub Function3_FileExplorer()
    Dim file          As Variant
'   Start File Explorer to select file containing data (simple GUI, much easier than coding vFileName)
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        If .Show Then
            file = .SelectedItems(1)
        End If
    End With
    MsgBox file

    Exit Sub
ErrorHandler:
    MsgBox "Error detected" & vbNewLine & "Error" & Err.Number & _
           Err.Description, vbCritical, "Error Handler: Error " & Err.Number

End Sub