令人高兴的是,你会发现大多数这些字符已经作为工作表名称字符无效,即*?[]等等
但正如你已经说过的那样,使用正则表达式 :)
True对于有效字符串,返回类似下面的内容,对于无效字符串False.
我已在上面添加了您的项目,根据需要转义特殊字符.
[更新:添加替换功能]
Sub TestCleanNames()
Dim StrArr()
Dim StrTst
StrArr = Array("Am i ok", "Sheet||a", "audited??", "Sheet1")
For Each StrTst In StrArr
MsgBox StrTst & " = " & ValidSheetName(CStr(StrTst)) & vbNewLine & CleanSheetName(CStr(StrTst))
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
有效名称功能
Function ValidSheetName(strIn As String) As Boolean
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
objRegex.Pattern = "[\<\>\*\\\/\?|]"
ValidSheetName = Not objRegex.test(strIn)
End Function
Run Code Online (Sandbox Code Playgroud)
清洁功能
Function CleanSheetName(strIn As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "[\<\>\*\\\/\?|]"
CleanSheetName = .Replace(strIn, "_")
End With
End Function
Run Code Online (Sandbox Code Playgroud)