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