• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel VBA(vbscript) patttern処理)

Excel VBAでの文字列処理方法

このQ&Aのポイント
  • Excel VBAを使用して、特定の形式の文字列を処理する方法を教えてください。
  • 与えられた文字列から、特定の部分を抜き出して新しい文字列を作成する方法を教えてください。
  • 指定された条件に基づいて、与えられた文字列を変換するVBAマクロコードの例を示します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 パターンで処理する方法もあるけれども、以下のように、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

taktta
質問者

お礼

ご回答どうもありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

#1の回答者です。 一応、代わりの正規表現パターンも書いておくことにします。 Replace 関数で行うのも、どちらでもよいです。全角空白に関しては、可視化するために、文字コードにしておきました。  .Pattern = "^(\D*)(\d+\_?\d+)([A-z]+)[\s\u3000]*\.xls"

taktta
質問者

お礼

どうもごていねいに、ご回答どうもありがとうございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

xをVBAのReplaceで、 x = Replace(x, " ", "") x = Replace(x, " ", "") としておけばいいが、 どうしてもRegEXPを使いたければ、 .Pattern = "^(\D*)(\d+\_?\d+)([a-z]*)((\s*)| *).xls" とでもするのかな。 | *).は全角空白。 半角空白か、全角空白だけなら何個でもいいが、混在はだめだ。 1個なら大丈夫だろう。

taktta
質問者

お礼

 その通り本質をみていませんでした。 ご回答どうもありがとうございました。

関連するQ&A