メニュー

セルに値と関数を代入
条件判断
ループ処理
エラー処理
エラーを無視する
数字のフォーマット
文字を数値に変換
Trim処理
クラスの作成

配列のループ処理
動的配列 ReDim
Collectionの利用(配列数不明)
Rangeの範囲を配列に格納
Scripting.Dictionary
配列のソート

変数の宣言を強制する
変数の参照渡し、値渡し
ファイル、フォルダ選択ダイアログ
プログレスバーを表示する
所定のフォルダ配下にあるExcelを開く

月末日の取得
文字列の分割、抜き出し
重複行の削除

データ抽出関係
SQLServerに接続
CSVファイルの読み込み
ADODBでCSVファイル読み込み
フィルターによるデータ抽出
ADOでMySQLに接続
ADODB.Streamでファイル読み込み
SQLServerにInsert文発行
バイナリファイルの入出力
Baspでバイナリファイルの入出力
Scripting.TextStreamでファイル読み込み

シートの操作
WorkSheetsとSheetsの違い
シートの選択
シートの追加
シートの最終行・列の取得
シートの存在チェック
シートの印刷方法
セルが変更された時の処理

ワークブックの操作
ワークブックを開いた時のイベント
他のワークブックの操作
ワークブックを閉じる

ユーザフォーム
ListBoxを表示・選択
フォームをモードレスで表示
シート上のコンボボックスの操作
コンボボックス選択で別なコンボボックスを変更
コントロールをマウスで移動
フォームの閉じるボタンの処理

ドライブ情報の取得
Basp21でメール送信
WSHを利用する
IEを利用@
OSとExcelのバージョン情報を取得
正規表現によるチェック
XmlHttpRequest送信

トップ
E-Mail
xml

ASP.Netのお勉強
ASP.Netで掲示板を作成しよう
VB.Netのお勉強
PHPのお勉強
AJAXのお勉強
Webデザインのお勉強
Javaのお勉強
連想書籍検索
世界の観光地検索
路線図
総合サイトCocoaLiz
ADODBでCSVファイル読み込み@Excel マクロ・VBA

ADODBを用いて、CSVファイルを読み込みます。
Microsoft ActiveX Data Objectを参照設定します。

以下のCSVファイルを読み込みます。
1,名前A,AAA
2,名前B,BBB
3,,CCC
4,名前D,

接続文字列を作成します。
Provider:Microsoft.Jet.OLEDB.4.0
Data Source:CSVが置かれているフォルダパス
Extended Properties:"Text;HDR=NO;FMT=Delimited"
(HDRは、CSVファイルにヘッダがあるかないかです、あればYES)
(FMT=Delimitedは、CSVファイルの意味です。)

接続を行います。
そのあと、SQL文を発行します。
Fromの所で、CSVファイル名を指定します。
WHERE句も利用できます。(likeも使えました。)

HDR=YESの場合は、そのままカラム名にヘッダ名を使用します。
HDR=NOの場合は、自動的にカラム名が付与されます。
(F1,F2,F3,F4・・・)な感じみたいです。

SQL文を発行して、Recordsetを取得します。
あとは、結果をシートに書き込みます。

VBAも色々と出来るんですね。


Option Explicit

Sub ReadCSV()

Dim con As New ADODB.Connection
Dim connectionString As String
Dim csvFilePath As String

Dim rs As ADODB.Recordset
Dim item As Variant
Dim rowNo As Integer
Dim colNo As Integer

'CSVファイルが置かれているフォルダ
csvFilePath = "C:\"

'接続文字列、CSVファイルにラベルがあれば、HDR=YES
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                    & "Data Source=" & csvFilePath & ";" _
                    & "Extended Properties=""Text;HDR=NO;FMT=Delimited"""


On Error GoTo Err
'コネクションオープン
con.Open connectionString

'SQL文を実行(RecordSETで受け取ります)
'全件
Set rs = con.Execute("SELECT * FROM test.csv")

'条件検索
'2列目の値が「~A」のデータのみ抽出
'Set rs = con.Execute("SELECT * FROM test.csv WHERE F2 like '%A'")

'シートデータクリア
Worksheets("Sheet1").Cells.Clear

rowNo = 1
colNo = 1
'RecordSetの終了まで
Do While rs.EOF = False

    'データ抽出
    For Each item In rs.fields
        Worksheets("Sheet1").Cells(rowNo, colNo).Value = item.Value
        colNo = colNo + 1
    Next
    colNo = 1
    rowNo = rowNo + 1

    '次のレコード
    rs.MoveNext
Loop

'クローズ
con.Close
Set rs = Nothing
Set con = Nothing
Exit Sub

Err:
Set rs = Nothing
Set con = Nothing

'エラー内容
MsgBox (Err.Description)

End Sub




Copyright (C) 2008 Excelマクロ・VBAのお勉強. All Rights Reserved.