• ベストアンサー

VBA での文字列編集

すみません、VBA初心者であまり調べる時間がないので質問させて頂きます。 Dim strFileName As String Dim strChk1 As String Dim strChk2 As String strFileName には "20070703_TEST001_DATA.csv" の文字列のデータが 格納されているとします。 この strFileName を編集して strChk1 には "20070703" strChk2 には "TEST001" がセットされるようにしたいのですが。。。 どのようにプログラムを書くのが一番いいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

Private Sub コマンド0_Click()   Dim strFileName As String   Dim strChk1   As String   Dim strChk2   As String   strFileName = "20070703_TEST001_DATA.csv"   strChk1 = CutStr(strFileName, "_", 1)   strChk2 = CutStr(strFileName, "_", 2)   Debug.Print strChk1   Debug.Print strChk2 End Sub [イミディエイト] 20070703 TEST001 このように CutStr関数などを自作するのも手です。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

rariko
質問者

お礼

ご回答ありがとうございました。 なるほど、すごいですね。 自作の関数を作れるようになれるよう頑張りたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

切り出す文字数が必ず決まっているなら、切り出す文字数を 指定してmid関数を使います。 strChk1 = Mid(strFileName, 1, 8) strChk2 = Mid(strFileName, 10, 7) 文字数が可変であり、"_"で区切って1個目と2個目を 切り出したいならsplit関数+配列で Dim vaChk() As String vaChk() = Split(strFileName, "_") とすると vaChk(0)="20070703" vaChk(1)="TEST001" vaChk(2)="DATA.csv" が取得できます。

rariko
質問者

お礼

丁寧なご解説ありがとうございました。 大変助かりました。

すると、全ての回答が全文表示されます。

関連するQ&A