VBA:如何在不引用文件路径的情况下需要某个文件名?

时间:2017-04-18 17:42:42

标签: excel vba

我需要用户选择某个文件名,但该文件可能位于不同的文件夹或驱动器中,具体取决于谁使用它,因此路径无关紧要。我尝试使用星号作为路径,但它不起作用。有什么建议?该文件将始终命名为“2016 latest.txt”,“2017 latest.txt”等。我希望上传的下一个文件始终按顺序排列,这就是我在代码中有“LastYear + 1”的原因。至于路径,文件的来源无关紧要,只有名称。

Public:
   .....

Private:
   ....
   singletons: 12b282b6c4e1ec3cee386f4ca6165aafc4731a84
   token: 6a76ae3300237dea44123119624d5293
   ....

2 个答案:

答案 0 :(得分:4)

您始终可以让用户选择文件:

Sub GetFile()
    Dim fNameAndPath As Variant
    fNameAndPath = Application.GetOpenFilename(FileFilter:="All Files (*.*), *.*", Title:="Select File To Be Opened")
    Debug.Print fNameAndPath
    Debug.Print Dir(fNameAndPath)
    If Dir(fNameAndPath) = "yourFileName" Then
    'correct file
    else
    'wrong file
    endif
End Sub

或者您可以在文件系统中搜索该特定文件,但这可能会更加困难(权限,庞大的文件系统等)。正如@Masoud所说,如果它不在当前文件夹中,则需要提供路径。

修改 如果您希望用户只选择文本文件,请替换

FileFilter:="All Files (*.*), *.*"

FileFilter:="Text Files (*.txt), *.txt"

答案 1 :(得分:0)

Like运算符可用于模式匹配:

Dim fName, y
fName = Application.GetOpenFilename("Text Files (*.txt), *.txt")
y = ['Main Menu'!B1 + 1]
If Not fName Like "*\" & y & " latest.txt" Then
     If fName <> False Then MsgBox "Wrong File. Please choose " & y & " file."
     Exit Sub
End If