|
エクセルからアクセスのクエリーを実行したいのですが、他の掲示板で質問したところ、下記の回答をいただきました。
ただ、クエリーは選択できるのですが、実行するとエラーが出るのです。
どこでエラーが出てるのかさっぱりわかりません(>_<)
どなたか分かる方がいらっしゃったら、ご指導お願いしたいのですが。。。
↓これをシートモジュールへ
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancl As Boolean)
Dim Lp As Single, Wp As Single, Hp As Single
Dim ObjDB As DAO.Database
Dim i As Long
Const MyDB As String = _
"C:\Documents and Settings\User\My Documents\DB_Files\test.mdb"
With Target
If .Row > 1 Then Exit Sub
Lp = .Left: Wp = .Width * 2: Hp = .Height
End With
Cancel = True
Set ObjDB = DBEngine.Workspaces(0).OpenDatabase(MyDB)
If ObjDB.QueryDefs.Count = 0 Then GoTo ELine
With ActiveSheet.DropDowns.Add(Lp, 0.1, Wp, Hp)
For i = 0 To ObjDB.QueryDefs.Count - 1
.AddItem ObjDB.QueryDefs(i).Name
Next i
.OnAction = "Exc_MySQL"
End With
ELine:
ObjDB.Close: Set ObjDB = Nothing
End Sub
↓これは標準モジュールへ
Sub Exc_MySQL()
Dim x As Variant
Dim ObjDB As DAO.Database
Dim i As Integer
Dim SQLSt As String
Const MyDB As String = _
"C:\Documents and Settings\User\My Documents\DB_Files\test.mdb"
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
With ActiveSheet.DropDowns(x)
i = .ListIndex - 1
.Delete
End With
Set ObjDB = DBEngine.Workspaces(0).OpenDatabase(MyDB)
SQLSt = ObjDB.QueryDefs(i).SQL
ObjDB.Execute SQLSt, dbFailOnError
ObjDB.Close: Set ObjDB = Nothing
End Sub
まず、VBE画面のメニューで「ツール」「参照設定」を選択し、
"Microsoft DAO 3.? Object Library" にチェックをつけて下さい。
イベントマクロを入れたシートの1行目の任意のセルをダブルクリックすると、
コンボボックスが現れます。そこに
"C:\Documents and Settings\User\My Documents\DB_Files\test.mdb"(仮)
で登録しているクエリーの名前がリストアップされますから、選択してください。
Exc_MySQLが呼び出されて実行されます
|
|