更一般地说,您需要执行清理并从字符串中删除不允许的字符,这将是文件夹名称。一旦我在类似的情况下遇到同样的麻烦 - 使用主题作为名称保存来自 Outlook 的数百封电子邮件。以下是 2 种方法,均使用RegEx:
Chr(34)
是双引号,由于显而易见的原因,不可能直接列出它。对于您的特定情况,您应该添加到列表中,即所谓的“新行”字符以及使用"[start of pattern]" & "\" & Chr(10) & "\" & Chr(13) & "[rest of pattern]"
. 模式中字符的顺序无关紧要。
上述模式意味着所有BUT拉丁字母、数字、空格、点和连字符都将被替换/删除。
这两种方法各有利弊,但我认为主要原因是:
- 当目标是尽可能保留原始字符串时,应使用不允许的字符。
- 当名称不那么重要时,应使用允许的字符列表,但保存任何没有错误的文件是#1 目标。
这是 RegEx 使用的相关代码:
Dim RegX_NAChars As Object
Set RegX_NAChars = CreateObject("VBScript.RegExp")
RegX_NAChars.Pattern = [**use any of the above**]
RegX_NAChars.IgnoreCase = True
RegX_NAChars.Global = True
........[**your code**]........
RegX_NAChars.Replace(String_to_Cleanup, "")
RegX_NAChars.Replace
上面将用定义的替换字符串替换所有匹配的字符。在我的情况下,它是""
- 空字符串,这意味着字符被丢弃。将其替换为任何内容(当然,文件夹名称字符也必须允许这些字符 - 例如 use _
)。
阅读更多关于正则表达式:http: //www.jose.it-berater.org/scripting/regexp/regular_expression_syntax.htm