以下の手順で、ADOを使用して、閉じたブックからレコードセットを取得し、データの読み取り/書き込みを行うことができます。

次のようなプロシージャを呼び出します:

GetWorksheetData “C:FoldernameFilename.xls”、 “SELECT * FROM [SheetName $];”、ThisWorkbook.Worksheets(1).Range( “A3″)

SheetNameを、データを取得するワークシート名に置き換えます。

Sub GetWorksheetData(strSourceFile As String、strSQL As String、TargetCell As Range)

Dim cn As ADODB.Connection、rs As ADODB.Recordset、f As Integer、r As Long If TargetCell Is Nothing Then Exit Sub Set cn = New ADODB.Connection On Error Resume Next cn.Open “DRIVER = \ {Microsoft Excel Driver( * .xls)}; DriverId = 790; ReadOnly = True; ” &_ “DBQ =”&strSourceFile& “;”

‘DriverId = 790:Excel 97/2000′ DriverId = 22:Excel 5 / 95’DriverId = 278:Excel 4’DriverId = 534:Excel 3 On Error GoTo 0 If cn Is Nothing Then MsgBox “ファイルが見つかりません! “、vbExclamation、ThisWorkbook.Name Exit Sub End If ‘レコードセットを開くSetrs = New ADODB.Recordset On Error Resume Next rs.Open strSQL、cn、adOpenForwardOnly、adLockReadOnly、adCmdText’ rs.Open” SELECT FROM [SheetName $] ” 、_ cn、adOpenForwardOnly、adLockReadOnly、adCmdText’rs.Open “SELECT FROM [SheetName $]”、_ cn、adOpenStatic、adLockOptimistic、adCmdText ‘rs.Open “SELECT FROM [SheetName $] WHERE [Field Name] LIKE’A% ‘”、_ cn、adOpenStatic、adLockOptimistic、adCmdText’ rs.Open” SELECT FROM [SheetName $] WHERE [Field Name] LIKE’A% ‘ORDER BY [Field Name] “、_ cn、adOpenStatic、adLockOptimistic、adCmdText’オプションレコードセットを取得する方法 ‘Set rs = cn.Execute( “[A1:Z1000]”)’最初のワークシート ‘Set rs = cn.Execute( “[DefinedRangeName]”)’任意のワークシートOn Error GoTo 0 If rs Is Nothing Then MsgBox「開くことができませんファイル! “、vbExclamation、ThisWorkbook.Name cn.Close Set cn = Nothing Exit Sub End If RS2WS rs、TargetCell’TargetCell.CopyFromRecordset rs ‘Excel2000以降のオプションのアプローチIfrs.State = adStateOpen Then rs.Close End If Set rs = Nothing cn.Close Set cn = Nothing End Subマクロの例では、VBAプロジェクトがADOオブジェクトライブラリへの参照を追加していることを前提としています。

これを行うには、VBE内から、[ツール]、[参照]メニューを選択し、[Microsoft ActiveXデータオブジェクトx.xオブジェクトライブラリ]を選択します。