CSVの項目をVBAのsplit関数で分割

VBAには、様々な文字列処理関数が用意されていますが、中でも強力なのが「指定の区切り文字で文字列を分割する」Splitです。このSplit関数を使うと、「各要素を,で区切ったCSV」の文字列を「,で分割」することで区切られている各要素を取得することができます。

Splitは、処理対象文字列と分割する文字列を指定し、呼び出すと処理対象文字列を指定の文字列で分割した結果を「配列」として返します。この配列の各要素に、分割された各要素の文字列が格納されているわけです。

試しに、以下のVBAマクロを実行してみてください。

Sub aa()

    items = Split("abc,def,ghi", ",")

    MsgBox items(0)

End Sub

このマクロは、「abc,def,ghi」という,区切りのCSV文字列をSplit関数を使って「,」で分割し配列itemsに格納。その最初の要素をメッセージとして表示するものです。
実行すると、CSV文字列の最初の要素である「abc」という文字列が表示されましたね。ここでは、分割のキーとして指定した「,」を含まない点に注意してください。

続いて、MsgBoxの引数をitems(1)、items(2)と変えて「2番目の要素」「3番目の要素」が表示されることを確認しましょう。

また、配列の要素数(より1小さい数)はUBound()関数で取得できるので、

MsgBox UBound(items) + 1

とすると、配列、つまり分割されたCSVの要素数が表示されます。配列の引数に配列の要素数以上(配列の引数は0から始まるので、最後の要素の引数は要素数-1)の数値を指定すると実行時エラーとなるので、Splitで取得した配列を処理する際はUBoundで要素数を確認するようにしましょう。


エクセルVBA練習帳