より一般的に言えば、クリーンアップを実行し、フォルダー名になる文字列から許可されていない文字を削除する必要があります。同様の状況で同じ問題に直面したら、件名を名前として使用して Outlook から何百ものメールを保存します。以下は 2 つのアプローチで、どちらもRegExを使用します。
次のパターンを使用して、許容できない文字のリストを作成します。
RegX_NAChars.Pattern = "[\" & Chr(34) & "\!\@\#\$\%\^\&\*\(\)\=\+\|\[\]\{\}\`\'\;\:\<\>\?\/\,]"
Chr(34)
は二重引用符です。明らかな理由から、直接リストすることはできません。特定のケースでは、リストにいわゆる「改行」文字を追加する必要があります"[start of pattern]" & "\" & Chr(10) & "\" & Chr(13) & "[rest of pattern]"
. パターン内の文字の順序は重要ではありません。
上記のパターンは、すべてのラテン文字、数字、スペース、ドット、およびハイフンが置換/削除されることを意味します。
どちらのアプローチにもそれぞれ長所と短所がありますが、主な理由は次のとおりだと思います。
- 元の文字列を可能な限り保持することが目標である場合は、許可されていない文字を使用する必要があります。
- 名前がそれほど重要でない場合は、許可された文字リストを使用する必要がありますが、エラーなしでファイルを保存することが最大の目標です。
これは、正規表現の使用に関連するコードです。
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