|
▼ほびっと さん:
こんにちは。
>VBAでKen_ALLの見出し行(1行目にフィールド名)を挿入することはできるのですか?
VBA でテキスト操作はできるのですが、
1) Temp と言う名前で CSV ファイルを Open
2) Ken_ALL を Open
3) Temp の1行目に見出し行を追加
4) Temp の2行目から Ken_ALL を追加
5) Temp を Ken_ALL と言う名前で上書きコピー
6) Ken_ALL を削除
というような面倒な処理になります。
そこで「schema.ini」を作ってみましょう。
Ken_ALL と同じフォルダに
[Ken_ALL.csv]
ColNameHeader=False
CharacterSet=oem
Format=CSVDelimited
Col1=F1 Integer
Col2=F2 Char Width 255
Col3=F3 Char Width 255
Col4=F4 Char Width 255
Col5=F5 Char Width 255
Col6=F6 Char Width 255
Col7=F7 Char Width 255
Col8=F8 Char Width 255
Col9=F9 Char Width 255
Col10=F10 Integer
Col11=F11 Integer
Col12=F12 Integer
Col13=F13 Integer
Col14=F14 Integer
Col15=F15 Integer
と記述して「schema.ini」という名前で保存。
これで取り込む際にフィールド名が付加されます。
Sub 東京都だけ抽出()
Dim adoCON As Object
Dim adoRS As Object
Dim strSQL As String
Dim FName As String
Set adoCON = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
adoCON.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"DBQ=" & ThisWorkbook.Path & ";" & _
"ReadOnly=0"
strSQL = "SELECT F1,F2,F3,F4,F5,F6,F7,F8 " _
& "FROM Ken_ALL.csv Where F7 = '東京都'"
adoRS.Open strSQL, adoCON, 3
adoRS.MoveLast
ActiveSheet.Cells(adoRS.RecordCount, 8).NumberFormatLocal = "@"
adoRS.MoveFirst
ActiveSheet.Cells(1, 1).CopyFromRecordset adoRS
adoRS.Close
adoCON.Close
Set adoRS = Nothing
Set adoCON = Nothing
End Sub
東京都だけ抽出するサンプルコートです。
Ken_ALL に ユニークな値がないので、
>1列目のデータが変わる最初の行のみ
という処理まで思いつきませんでした。すみません。
|
|