Attribute VB_Name = "Module1" '■ マクロ500連発<第2段> ' ' OLEDBプロパイダを使ってブックにアクセスする ' ' Copyright(C) 2000 Sunago ' '  このマクロを実行するには、参照可能なライブラリファイルとして ' Microsoft ActiveX Data Objects 2.1 Library(ADO)または同等 ' ライブラリへの参照設定が必要です。 ' ' ※ADOで作成したRecordsetもCopyFromRecordsetメソッドに対応して '  います(DAO利用時、多い件数のRecordsetに対してCopyFromRecordset ' メソッドを実行、即エラーとなるのですがADOでは問題ないようです)。 Option Explicit '/* 接続方法その1 */ Sub Macro1() Dim Cnn As ADODB.Connection Dim Rec As ADODB.Recordset Dim p 'バージョンチェック If Ver9Check = False Then MsgBox "このバージョンのEXCELでは別途ADOライブラリを入手し、" & vbCr & _ "インストールする必要があります。" Exit Sub End If Set Cnn = New ADODB.Connection Set Rec = New ADODB.Recordset With Cnn .Provider = "Microsoft.Jet.OLEDB.4.0" 'EXCEL2000で作成したブックを参照する場合もExcel8.0とします。 '※Excel9.0だとプロバイダ側が認識できず、エラーとなるため .Properties("Extended Properties") = "Excel 8.0" .Open Path(ThisWorkbook.Path) & "264data.xls" 'プロパティを列挙する場合はコメントを解除する 'For Each p In cnnDb.Properties ' Debug.Print p.Name & " := " & p.Value 'Next With Rec Set .ActiveConnection = Cnn '※Table1は「名前定義」で設定したセル範囲 '例1:テーブル名を使った例(adLockReadOnly) .Open "Table1", , , , adCmdTable If Not .EOF Then MsgBox "データを取得できます" Else MsgBox "データが見つかりません" End If .Close '例2:SQL文を使った例(adLockReadOnly) .Open "SELECT * FROM Table1", , , , adCmdText .Close End With .Close End With Set Rec = Nothing Set Cnn = Nothing End Sub '/* 接続方法その2 */ Sub Macro2() Dim Cnn As ADODB.Connection Dim Rec As ADODB.Recordset Dim strConn As String Set Cnn = New ADODB.Connection Set Rec = New ADODB.Recordset strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "User ID=Admin;Password=;" & _ "Data Source=" & Path(ThisWorkbook.Path) & "264data.xls;" & _ "Mode=Share Deny None;" & _ "Extended Properties=Excel 8.0;" ' Excel8.0(97)/9.0(2000) Cnn.Open strConn With Rec Set .ActiveConnection = Cnn '※Table1は「名前定義」で設定したセル範囲 '例1:テーブル名を使った例(adLockReadOnly) .Open "Table1", , , , adCmdTable .Close '例2:SQL文を使った例(adLockReadOnly) .Open "SELECT * FROM Table1", , , , adCmdText .Close End With Cnn.Close Set Rec = Nothing Set Cnn = Nothing End Sub '/* パスの終わりを\にする関数 */ Function Path(arg1) As String If Right(arg1, 1) = "\" Then Path = arg1 Else Path = arg1 & "\" End If End Function Private Function Ver9Check() As Boolean Dim strver As String strver = Application.Version If Int(Left(strver, InStr(strver, "."))) < 9 Then Ver9Check = False Else Ver9Check = True End If End Function