我需要通過傳遞一個字符串來執行一系列操作,操作過程取決於字符串是否是文件,一個文件夾或網址。VBA - 識別字符串是文件,文件夾還是網址url
僅供參考 - 一個文件我將文件複製到存儲庫,一個文件夾我想提出一個快捷方式.lnk並複製到存儲庫,併爲網站的網址我想提出一個快捷的.url並複製到一個存儲庫。
我開發了一個解決方案,但它不夠強大;我偶然發現錯誤識別字符串的錯誤。我採用的方法是計數字符串中的點,並應用該規則:
If Dots = 1 Then... it's a file.
If Dots < 1 Then... it's a folder.
If Dots > 1 Then... it's a website.
我再改進這一點使用一對夫婦的功能,我在網上找到:
Dots = Len(TargetPath) - Len(Replace(TargetPath, ".", "")) ' Crude check for IsURL (by counting Dots)
If CheckFileExists(TargetPath) = True Then Dots = 1 ' Better check for IsFile
If CheckFolderExists(TargetPath) = True Then Dots = 0 ' Better check for IsFolder
麻煩的是,我仍然有兩種情況下的問題:
當文件名包含額外的點,例如
\Report.01.doc
當字符串是遠程Intranet位置上的文件或文件夾(我認爲這可能是錯誤識別爲Web網址)。
任何指針在正確的方向將不勝感激。
湯姆^ h
你可能會喜歡看http://stackoverflow.com/questions/161738/what-is -the-best-regular-expression-to-check-if-a-string-is-a-url- – Fionnuala 2012-03-15 20:11:55
感謝您的回覆。 VBA中有正則表達式方法嗎?這看起來好像它可以做我以後的事情。 – FrugalTPH 2012-03-16 13:31:43
是的,它們是'CreateObject(「vbscript.regexp」)'或設置對Windows Script Host對象的引用。你會發現很多正則表達式的這種東西。您可能還想看看FileSystemObject。它有不少好方法。 – Fionnuala 2012-03-16 13:38:22