投稿日 | : 2004/07/22(Thu) 17:16 |
投稿者 | : りっとっと |
Eメール | : |
URL | : |
タイトル | : Re: CSVファイルの読み込みについて |
ADOなどを使ってSQLで操作したほうが妥当でしょう。
csvFilePath = "c:\"
csvFileNmae = "test.csv"
Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient
'1行目をフィールド名として扱う場合は
'cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & csvFilePath & ";Extended Properties=TEXT"
'1行目からデータの場合は
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & csvFilePath & ";Extended Properties=""TEXT;HDR=NO;FMT=Delimited;"""
Set rs = New ADODB.Recordset
'1行目がフィールド名の場合は
'rs.Open "select * from " & csvFileName & " where 科目 = '社会'", cn, adOpenStatic, adLockReadOnly
'Text1.Text = rs.Fields("点数").Value
'1行目〜データの場合は、フィールド名が左から"F1","F2"〜〜〜となる
rs.Open "select * from " & csvFileName & " where F1 = '社会'", cn, adOpenStatic, adLockReadOnly
Text1.Text = rs.Fields("F1").Value
あと、ADOを使わずに自力で関数を作る場合は
Private Data() As String
Private Enum FieldIdx
Kamoku
Tensuu
End Enum
Private Sub Command1_Click()
Text1.Text = GetData("社会", Kamoku, Tensuu)
End Sub
Private Sub Form_Load()
OpenCSV
End Sub
Private Sub OpenCSV(csvfilename)
Dim bin() As String
Dim strData As String
Open csvfilename For Binary As #1
ReDim bin(LOF(1) - 1)
Get #1, , bin
Close #1
strData = StrConv(bin, vbUnicode)
strData = Replace(strData, vbCrLf, vbLf)
strData = Replace(strData, vbCr, vbLf)
Data = Split(strData, vbLf)
End Sub
Private Function GetData(whereValue1 As String, whereIdx As FieldIdx, selectIdx As FieldIdx) As String
Dim cnt As Long
For cnt = 0 To UBound(Data)
If Split(Data)(whereIdx) = wherevalue Then
GetData = Split(Data)(selectIdx)
Exit Function
End If
Next
End Function
こんな感じになるかな?