5.2 エクセルやCSVを開く
ADOを使ってエクセルファイルを開くときの方法です。ADOオブジェクトのOpenというメソッドで行います。開くときの指定方法が何種類かありますが、ODBCデータソースを使う場合と使わない場合の基本的な方法を紹介します。

それと、やはり開きっぱなしというのも良くないので、使い終わったファイルは閉じましょう。閉じる場合は、ADOオブジェクトのCloseというメソッドで行います。

なお、ADOはデータを扱うための機能なので、エクセル固有の機能(書式設定など)は使えません。
XLSファイルを使う場合
Openメソッドのパラメタに、使用するドライバ名(エクセルドライバ)とXLSファイルのフルパス、更新有無を指定する方法です。ODBCデータソースの定義は使いません。

更新有無の指定はReadOnlyで行います。読み込みだけ行えれば良いときはReadOnly=1を指定、更新も行いたいときはReadOnly=0を指定します。

例では、ADOを使いc:\happy\ADO_EXCEL.xlsというXLSファイルを更新モードでオープン(@)しています。パラメタは、Driver=にエクセルのドライバ名、DBQ=にXLSファイルの場所(パス)、ReadOnly=に更新モード(0)を指定しました。また、それぞれを; 記号で区切ります。

閉じるとき(A)のCloseは、パラメタはありません。

Sub prcAdoExcel()

    'Access VBA Tips
    '5.2 エクセルやCSVを開く/EXCELをADOで開く

    Dim adoCON As New ADODB.Connection

    '@ADOを使いXLSを更新モードでオープンします。
    adoCON.Open "Driver={Microsoft Excel Driver (*.xls)}; " & _
                 "DBQ=c:\happy\ADO_EXCEL.xls;" & _
                 "ReadOnly=0"

    'Aデータベースのクローズ
    adoCON.Close

End Sub
 ※ドライバ名の空白は多くても少なくてもダメです。正確に指定しましょう。
CSVファイルを使う場合
ちなみに、CSVファイル(テキストファイル)を開くときはドライバ名に{Microsoft Text Driver (*.txt; *.csv)}を指定します。CSVファイルの場合はDBQ=の所へファイル名は指定せず、使いたいCSVファイル(テキストファイル)が入っているフォルダをフルパスで指定します。なお、更新有無の指定(ReadOnly)はワークブックを開くときと同じですが、CSVで可能なのは追加のみです。

次の例では、c:\happyというフォルダの中に入っているCSVファイル(テキストファイル)が、更新モードで扱えるようになります。

Sub prcAdoCSV()

    'Access VBA Tips
    '5.2 エクセルやCSVを開く/CSVをADOで開く

    Dim adoCON As New ADODB.Connection

    '@ADOを使い更新モードでCSVファイルを扱う準備(オープン)をします
    adoCON.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                 "DBQ=c:\happy;" & _
                 "ReadOnly=0"

    'Aデータベースのクローズ
    adoCON.Close

End Sub
 ※ドライバ名の空白は多くても少なくてもダメです。正確に指定しましょう。
ODBCデータソースを使う場合
Openメソッドのパラメタに、ODBCデータソース名を指定する方法です。この方法では、ODBCデータソースへドライバ(Excelドライバやテキストドライバ)とXLSファイルの場所(CSVのときはファイルが保存してある場所)のフルパス、更新モードをあらかじめ定義しておく必要があります。

例では、ADOを使いODBCデータソースに定義してあるADXLSというデータソースをオープン(@)しています。例えば、ADXLSc:\happy\ADO_EXCEL.xlsというXLSファイルの情報が定義しておけば、このXLSファイルをオープンすることになります。

閉じるとき(A)のCloseは、パラメタはありません。

Sub prcAdoExcelODBC()

    'Access VBA Tips
    '5.2 エクセルやCSVを開く/CSVをADOで開く

    Dim adoCON As New ADODB.Connection

    '@ADOを使いADXLSというデータソースをオープンします。
    ' 更新モードはODBCの定義に従います。
    adoCON.Open "DSN=ADXLS;"

    'Aデータベースのクローズ
    adoCON.Close

End Sub

ちなみに、ODBCデータソースですが、登録する場所にユーザDSNとシステムDSNの2種類あります。何が違うか知りたい人は『4.1 ユーザDSNとシステムDSN』をどうぞ。
Copyright(C) 1999-2006 結城圭介。 All rights reserved