仕事である関数のテストをしているのですが。
VB のフォームに TextBox が 30 個ほどちりばめられており、そこに値を入力してテストを行うことになってます。はっきり言ってかったるいです。
ということでテストドライバ製作者に「いちいち入力するの面倒だから CSV から読み込めない?」と尋ねてみると「うーん・・・僕もそう思ったんだけどね。○○さんが『そこまでしなくても』いいってさ。」との返答が。
あああ。また上の人がいいかげんな指示を。
それくらいのコーディング、VB でならすぐできるのに。
と思ったので本当にすぐできるのか試しに書いてみた。
要件:
・フォームに TextBox のコントロール配列がある
・CSV ファイルを読み込み、それぞれの TextBox に値をセットしたい
とりあえず1行分読み込みのサンプルということで。
Dim Params() As String
Dim i As Integer
ReDim Params(0 To Text1.Count - 1)
Open "test.csv" For Input As #1
Input #1, Params(0), Params(1), Params(2)
Close #1
For i = 0 To Text1.Count - 1
Text1(i) = Params(i)
Next
まず思いつく単純な方法。でもこれだとコントロール配列の Count が拡張された場合に対応できないし、30 個も並べるのは面倒。
ということで、こんな感じになるかな。
Dim Params As Variant
Dim Str As String
Dim i As Integer
Open "test.csv" For Input As #1
Line Input #1, Str
Close #1
Params = Split(Str, ",", -1)
For i = 0 To Text1.Count - 1
Text1(i) = Params(i)
Next
これだとダブルクォートとかカンマの処理がうまくできないけど、場合によってはこれでも十分なコードではないかと。タブ区切りとかになっても対応できるし。
ま、CSV 読み込みのサンプルコードなんてたくさんありそうなんで、そっち使ったほうがいいんでしょうけど。