|
▼Hirofumi さん:
こちらのいくつかのCSVファイルから鈴木という名前のような、特定の文字列を含む行を抽出するものでしたが、
Private Sub CSVRead 内で、
Do Until EOF(dfn)
'1行読み込み
Line Input #dfn, strBuff
'論理レコードに物理レコードを追加
strRec = strRec & strBuff
'論理レコードをフィールドに分割
vntField = SplitCsv(strRec, strDelim, , , blnMulti) '★1この行が無い
'フィールド内で改行が無い場合
If Not blnMulti Then
If vntField(0) <> "" Then
'配列変数vntFieldは、vntField(0):氏名、vntField(1):クラス
'・・vntField(5):数学の平均点、vntField(6):英語の平均点と成ります
'レコード中に、例えば「鈴木」という名前がある行を抽出
For i = 1 To UBound(vntMark, 1) - 1
'名前若しくはコメントの中に指定した文字列在る場合
If InStr(1, strRec, vntMark(i, 1), vbBinaryCompare) > 0 Then
'Forを抜ける
Exit For
End If
Next i
'もし指定文字列が有った場合
If i <= UBound(vntMark, 1) - 1 Then
'合成レコードを出力
Print #dfo, strRec
'出力行数をカウント
lngCount = lngCount + 1 '★2追加
End If
End If
strRec = ""
Else
'セル内改行として残す場合
strRec = strRec & vbCrLf
End If
Loop
の箇所では、E列に指定したいくつかの文字列を、指定形式のファイル内での1行に関して、全てのFieldに検索をしていただいていると思うのですが、
例えば、Field(1)のみ、または、Field(1)とField(2)のように検索するフィールドを指定したいのですが、
うまくいかずというかわからないのでご質問いたしました。
For i = 1 To UBound(vntMark, 1) - 1
'名前若しくはコメントの中に指定した文字列在る場合
If InStr(1, strRec, vntMark(i, 1), vbBinaryCompare) > 0 Then
'Forを抜ける
Exit For
End If
Next i
以上の箇所を書き換えていけばよいのかと思うのですが、
何度も質問してしまい申し訳ありません。
|
|