多通配符字符串匹配问询:Excel与SharePoint文件名比对异常
解决VBA字符串匹配失败的问题
嘿,这个问题我太熟了!你的代码判定不匹配,核心原因是VBA的Like运算符默认是区分大小写的。看你的例子:文件名里是全大写的_EUROPE_,但匹配模式里写的是首字母大写的*Europe_,大小写不一致直接导致了匹配失败。下面给你几个靠谱的解决方案:
方案1:统一大小写后再匹配
不用改原模式,把两个字符串都转成大写(或小写)再对比,彻底规避大小写问题:
Dim targetFileName As String, matchPattern As String targetFileName = "2018_01_MONTHLY DATA_TOTAL_EUROPE_Germany_CompanyName Deutschland.xlsx" matchPattern = "2018_01_MONTHLY DATA*Europe_Germany*.xlsx" ' 统一转成大写后执行匹配 If UCase(targetFileName) Like UCase(matchPattern) Then MsgBox "It works" Else MsgBox "It doesn't work" End If
方案2:全局启用不区分大小写的比较
如果你的整个模块都需要忽略大小写做字符串比较,直接在模块的最顶部(所有代码之前)加一行声明:
Option Compare Text
加了之后,模块里所有的字符串比较(包括Like、=这类运算符)都会自动忽略大小写,你的原代码就能直接正常运行了。
额外排查点:隐藏字符或格式差异
要是上面两种方法都不管用,就得检查有没有隐藏的小问题:
- 检查字符串里有没有不可见的空白字符(比如全角空格、Tab键、换行符),可以先用
Trim()清理首尾空格,或者用Replace(targetFileName, Chr(9), "")这类方法去掉特殊空白。 - 把两个字符串输出到VBA的立即窗口(用
Debug.Print targetFileName和Debug.Print matchPattern),逐字符对比细节,看看是不是有下划线、标点或者其他细微差异。
内容的提问来源于stack exchange,提问作者CCM
相关产品推荐
相关产品推荐

