如何使用打开文件对话框控件获取文件的选定路径和名称

VeV*_*eVi 7 excel vba

我需要使用文件对话框(excel中的VBA宏)打开的文件的路径名和文件名.我想在excelsheet中用超链接显示这些信息.谁能帮我?

提前致谢

编辑:

这就是我刚发现的:

Sub GetFilePath()

Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
    .Title = "Choose File"
    .AllowMultiSelect = False
    If .Show <> -1 Then
        Exit Sub
    End If
FileSelected = .SelectedItems(1)
End With

ActiveSheet.Range("A1") = FileSelected
End Sub
Run Code Online (Sandbox Code Playgroud)

使用此代码,我有文件路径.现在我仍在寻找获取文件名的方法.

TX

met*_*eus 12

您可以使用FileSystemObject获取文件路径的任何部分.GetFileName(filepath)为您提供所需的内容.

修改后的代码:

Sub GetFilePath()
Dim objFSO as New FileSystemObject

Set myFile = Application.FileDialog(msoFileDialogOpen)
With myFile
.Title = "Choose File"
.AllowMultiSelect = False
If .Show <> -1 Then
Exit Sub
End If
FileSelected = .SelectedItems(1)
End With

ActiveSheet.Range("A1") = FileSelected 'The file path
ActiveSheet.Range("A2") = objFSO.GetFileName(FileSelected) 'The file name
End Sub
Run Code Online (Sandbox Code Playgroud)


chr*_*sen 10

试试这个

Sub Demo()
    Dim lngCount As Long
    Dim cl As Range

    Set cl = ActiveCell
    ' Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show
        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            ' Add Hyperlinks
            cl.Worksheet.Hyperlinks.Add _
                Anchor:=cl, Address:=.SelectedItems(lngCount), _
                TextToDisplay:=.SelectedItems(lngCount)
            ' Add file name
            'cl.Offset(0, 1) = _
            '    Mid(.SelectedItems(lngCount), InStrRev(.SelectedItems(lngCount), "\") + 1)
            ' Add file as formula
            cl.Offset(0, 1).FormulaR1C1 = _
                 "=TRIM(RIGHT(SUBSTITUTE(RC[-1],""\"",REPT("" "",99)),99))"


            Set cl = cl.Offset(1, 0)
        Next lngCount
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

  • @ user1346347很高兴帮忙.如果这回答了你的问题,[你应该接受](http://meta.stackexchange.com/a/5235/159408)(点击勾选) (2认同)

小智 6

要仅从路径中提取文件名,可以执行以下操作:

varFileName = Mid(fDialog.SelectedItems(1), InStrRev(fDialog.SelectedItems(1), "\") + 1, Len(fDialog.SelectedItems(1)))
Run Code Online (Sandbox Code Playgroud)