VBAでCSVの一行を配列に格納する

VBAでCSVの一行を配列に格納します。

何故かVBAに無い「CSV文字列から配列への変換」

Microsoft Excel では、[データ]→[テキスト ファイル]と選んでいって、区切りをカンマにすることでCSVファイルを高速に Excel シートに読み込ませることができます。

この仕組みがVBAから利用できれば便利なのですが、そういう命令はありません。

関数を追加する

そこで、CSV文字列→配列変換をする関数を作成してみました。

VBAのエディタを開いたら、プロジェクト エクスプローラーで右クリック→[挿入]→[標準モジュール]として、以下を貼り付けてください。

参考にしたサイトはありません。

使い方

VBAの中から関数として呼び出します。

パラメータには配列にしたいCSV文字列と、返却して欲しい配列名を指定します。

配列は「Dim 配列名() as String」として定義しておいてください。

結果として配列にCSVを分解した文字列が入ってきます。

通常は LINE INPUT や adReadLine で読み込んできた行を入力にする感じだと思います。

ルール

” (ダブルクォート)が来たあとは、特殊な文字列の開始となります。

この間は、カンマが来ても文字として扱い、項目の区切りにはなりません。

“” (ダブルクォート2文字)が文字の「”」(ダブルクォート)と判定されます。

” (ダブルクォート)が1つだけ来た場合、特殊な文字列の終了となります。

入力 結果
配列(0) 配列(1) 配列(2) 配列(3)
“te,st,”,test te,st, test
“te””st””,test te”st test
te”st,test,”test test,testtest

では、この辺で。(^-^)o

VBA
スポンサーリンク
ぽぽろんをフォローする
この記事を書いた人

「ただいま」の挨拶よりもパソコンの電源を入れる方が先なパソコンおたく。プログラミングもするけど、パソコンを触っていること自体が趣味。

ぽぽろんをフォローする
ぽぽづれ。

コメント

タイトルとURLをコピーしました