CSVファイルのデータを下記の要領でコンボボックスに格納しています。
intFileNo = FreeFile
Open strFileName For Input As #intFileNo
Do While Not EOF(intFileNo)
Input #intFileNo, henohenomoheji
Combo1.AddItem (henohenomoheji)
Loop
通常の文字は問題がないのですが、CSVファイルに
「""」(ダブルコーテーション)の文字が入っている場合に、
正常に動作しません。
例:
「"あいうえお"かきくけこ」の文字を読み込む際にコンボボックスの表示が
「"あいうえお"かきくけこ」ではなく
「あいうえお」
「かきくけこ」と別データとして表示されてしまいます。
1つのデータとして読み込む方法はないでしょうか?
わかりづらい説明かもしれませんがご指導よろしくお願いします。
Line Input #1, henohenomoheji
にしてから自分で分解するとか
Dim xBunkai() As String
追記
Do While Not EOF(intFileNo)
Line Input #intFileNo, henohenomoheji
xBunkai() = Split(henohenomoheji, ",")
If UBound(xBunkai()) >= 0 Then
For i = 0 To UBound(xBunkai())
Combo1.AddItem xBunkai(i)
Next i
End If
Loop
ただし、当然 あああああ,いいい だと2つに分かれるんで。
あんびさん、ありがとうございます。
以下の処理を作成しています。
1.クリップボードを取得
↓
2.コンボボックスにクリップボードの内容を追加
↓
3.CSVファイルにコンボボックスの内容を保存
↓
4.次回起動時にCSVファイルの内容をコンボボックスに追加
現在4.で、つまづいています。
>Line Input #intFileNo, henohenomoheji
では改行した文字を読み込む際に改行部分で別データになってしまいます。
根本的に上記のような処理は難しいのでしょうか・・・
逃げ道はあるけど、制約になってしまいます。
例えば、LINEINPUTで読んだデータに
**** という文字列が入っていたら内部的に改行コードとして扱うなど。
この場合、****の部分は絶対クリップボードにいれないだろうと思う
文字列にしておけばほとんどの場合大丈夫だとおもうけど
****に該当する文字をクリップボードにいれたとしたら改行として扱う
プログラムになるんでしょうね(説明がわかりにくいですが)
**** を VBCRLF に内部で変換する と言う仕様にしたらいけそうだけど
**** とクリップボードにはいっていたら VBCRLFに置き換わる
と言いたいだけなんですが。
説明下手ですいません。
わからなくなったら思いっきり簡略化した
コードで試してみるのも手です。
Private Sub Form_Load()
Dim a As String
Combo1.AddItem """" & "あいうえお" & """" & "かきくけこ"
Open App.Path & "\" & "test.csv" For Output As #1
Print #1, Combo1.List(0)
Close
Open App.Path & "\" & "test.csv" For Input As #1
Line Input #1, a
Close
Combo1.AddItem a
End Sub
「"あいうえお"かきくけこ」が2つコンボボックスに入ればOKですよね。
特に何も問題は無いと思いますが。
ツイート | ![]() |