我遇到了問題。我已經完成了我的研究並發現可以使用InSTR函數來搜索字符串中的特定字符。InSTR或VBA中的查找功能
我想要做的是從文件路徑中提取文件名。
目前我有
InStr(StrFrom(pName), "\")
這裏的問題,它返回斜線的第一次出現,在那裏,因爲我想要得到的斜線最後一次出現(這樣我可以用一個「正確」的功能包裹上面的代碼來捕獲文件名)
任何幫助讚賞如何獲得字符串中的最後一個斜槓!
謝謝!
我遇到了問題。我已經完成了我的研究並發現可以使用InSTR函數來搜索字符串中的特定字符。InSTR或VBA中的查找功能
我想要做的是從文件路徑中提取文件名。
目前我有
InStr(StrFrom(pName), "\")
這裏的問題,它返回斜線的第一次出現,在那裏,因爲我想要得到的斜線最後一次出現(這樣我可以用一個「正確」的功能包裹上面的代碼來捕獲文件名)
任何幫助讚賞如何獲得字符串中的最後一個斜槓!
謝謝!
Instr
從文本字符串開頭看,InstrRev
從另一端開始尋找。
Public Function FileNameOnly(ByVal FileNameAndPath As String) As String
FileNameOnly = Mid(FileNameAndPath, InStrRev(FileNameAndPath, "\") + 1, Len(FileNameAndPath))
End Function
謝謝所有 - 我用過關於instrRev +以上邏輯的組合可以得到這個名字:) – Dingo
打算添加'MsgBox CreateObject(「Scripting.FileSystemObject」)。GetFileName(CreateObject(「Scripting.FileSystemObject」)。GetAbsolutePathName(「
這兩個罰款解決方案,我會添加1)使用'Application.PathSeparator'而不是'「\」'並給它更通用性2)避免雙重FileSystemObject對象'用CreateObject「Scripting.FileSystemObject」)| FileNameOnly = .GetFileName(.GetAbsolutePathName(FileNameAndPath))| End With -' – user3598756
使用InStrRev()從字符串的右側查找斜槓的第一個匹配項。
https://msdn.microsoft.com/en-us/library/t2ekk41a(v=vs.90).aspx
假設StrFrom是一些用戶定義的函數,下面會做你想要什麼:
Dim filename as String
Dim path as String
path = StrFrom(pName)
filename = Mid$(path, InstrRev(path, "\") + 1)
需要注意的是其更容易作爲InstrRe使用Mid $而不是Right $ v返回字符串左側的字符位置。省略Mid $的最後一個參數將從該位置返回字符串的其餘部分。
可能重複[檢查一個字符串是否包含另一個字符串](http://stackoverflow.com/questions/15585058/check-if-a-string-contains-another-string) – LimaNightHawk