- ベストアンサー
Excel VBAでの文字列処理方法
- Excel VBAを使用して、特定の形式の文字列を処理する方法を教えてください。
- 与えられた文字列から、特定の部分を抜き出して新しい文字列を作成する方法を教えてください。
- 指定された条件に基づいて、与えられた文字列を変換するVBAマクロコードの例を示します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 パターンで処理する方法もあるけれども、以下のように、VB側のReplace 関数で処理したほうが確かな気がします。パターンには、テキストコンペア・モードがなかったような気がするので、全角・半角を指定しなければならないと思います。 Sub test2() Dim x As String Dim y As String Dim z As String x = "FILE20041211_1212system .xls" With CreateObject("VBScript.RegEXP") .Pattern = "^(\D*)(\d+\_?\d+)(\D*)\.xls" If .test(x) Then y = .Replace(x, "$1") & .Replace(x, "$3") '以下に一行加えた y = Replace(y, Space(1), "", , , 1) '1=vbTextCompare z = .Replace(x, "$2") & ".xls" End If MsgBox x & vbLf & y & vbLf & z End With End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
#1の回答者です。 一応、代わりの正規表現パターンも書いておくことにします。 Replace 関数で行うのも、どちらでもよいです。全角空白に関しては、可視化するために、文字コードにしておきました。 .Pattern = "^(\D*)(\d+\_?\d+)([A-z]+)[\s\u3000]*\.xls"
お礼
どうもごていねいに、ご回答どうもありがとうございました。
- okormazd
- ベストアンサー率50% (1224/2412)
xをVBAのReplaceで、 x = Replace(x, " ", "") x = Replace(x, " ", "") としておけばいいが、 どうしてもRegEXPを使いたければ、 .Pattern = "^(\D*)(\d+\_?\d+)([a-z]*)((\s*)| *).xls" とでもするのかな。 | *).は全角空白。 半角空白か、全角空白だけなら何個でもいいが、混在はだめだ。 1個なら大丈夫だろう。
お礼
その通り本質をみていませんでした。 ご回答どうもありがとうございました。
お礼
ご回答どうもありがとうございました。