VBAには、様々な文字列処理関数が用意されていますが、中でも強力なのが「指定の区切り文字で文字列を分割する」Splitです。このSplit関数を使うと、「各要素を,で区切ったCSV」の文字列を「,で分割」することで区切られている各要素を取得することができます。 Splitは、処理対象文字列と分割する文字列を指定し、呼び出すと処理対象文字列を指定の文字列で分割した結果を「配列」として返します。この配列の各要素に、分割された各要素の文字列が格納されているわけです。 試しに、以下のVBAマクロを実行してみてください。 Sub aa() items = Split("abc,def,ghi", ",") MsgBox items(0) End Sub このマクロは、「abc,def,ghi」という,区切りのCSV文字列をSplit関数を使って「,」で分割し配列itemsに格納。その最初の要素をメッセージとして表示するものです。 続いて、MsgBoxの引数をitems(1)、items(2)と変えて「2番目の要素」「3番目の要素」が表示されることを確認しましょう。 また、配列の要素数(より1小さい数)はUBound()関数で取得できるので、 MsgBox UBound(items) + 1 とすると、配列、つまり分割されたCSVの要素数が表示されます。配列の引数に配列の要素数以上(配列の引数は0から始まるので、最後の要素の引数は要素数-1)の数値を指定すると実行時エラーとなるので、Splitで取得した配列を処理する際はUBoundで要素数を確認するようにしましょう。 |