今、CSVファイルをoutlookに読み込ませるプログラムを組んでいます。CSVファイルの中身
"AAA","BBB","CCC"
"ooo","yyy","ppp"
"あああ","すすす","みみみ"
みたいなものを一文字ずつ取り込んでいこうと思っています。まず、ダブルクォーテーションかどうか、さらにそれが1つ目か2つ目かの判定をし、どちらでもなければ間のAAAを読み込むといったかんじです。初心者なのでどのように書いていいのか、またaryStrやchrの使い方がイマイチわかりません。どなたかお知恵をかしてください。。。
ところで使っているVBはVB6?.net?
編集 削除Dim ObjFileSystem As Object
Dim ObjFile As Object
Dim FileName As String
Dim StrBuff() As String
Dim colNumber As Integer
Dim SyutokuBuff(100) As String
Dim Yousobango As Integer
' 読み込むCSVファイル
FileName = "c:\testfile.csv"
Set ObjFileSystem = CreateObject("Scripting.FileSystemObject")
Set ObjFile = ObjFileSystem.OpenTextFile(FileName)
Do Until ObjFile.AtEndOfStream
' 1行分のデータを読み込み、カンマ毎に配列に保存
StrBuff = Split(ObjFile.ReadLine, ",")
For colNumber = 0 To UBound(StrBuff)
'たとえば3列目のデータをそれぞれのレコードから取得する場合
SyutokuBuff(Yousobango) = StrBuff(2)
Next
Yousobango = Yousobango + 1
Loop
ObjFile.Close
Set ObjFileSystem = Nothing
Set ObjFile = Nothing
End Sub
'あとは、必要なだけSyutokuBuff()の配列宣言の要素数を変えてください。
'聞きたかったのは、こういう事ですかね??
尚、データにカンマが含まれている場合は、これでは出来ませんので・・・。
編集 削除自前で実装するのは結構きついので、ADO を使ってみては?
※ E:\TEMP\HOGE.CSV を読み込むものとします。
Dim con As Object
Dim rec As Object
Dim f As Object
Set con = CreateObject("ADODB.Connection")
With con
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "text;HDR=No;FMT=Delimited;"
.Open "E:\TEMP"
End With
Set rec = CreateObject("ADODB.Recordset")
rec.Open "SELECT * FROM HOGE.CSV", con
Do Until rec.EOF
For Each f In rec.Fields
Debug.Print f.Value
Next
Debug.Print
rec.MoveNext
Loop
rec.Close
con.Close
Set rec = Nothing
Set con = Nothing
この方法のいいところは、「,」や、「"」が混じっていてもきちんと読み込めることです。
例) 左がCSV上、右がフィールド値になります。
"1,234" → 1,234
"a""b""c" → a"b"c