Excelテーブルにリンクされたピボットテーブルとチャートを持つExcelブックがあります。ボタンを押すと、テーブル内のデータが削除され、アクセスデータベース内の保存されたクエリの更新データで置き換えられます。私は以下のコードを書いたが、私はプロシージャを実行するときに "無効なプロシージャコールまたは引数"エラーが発生しています。誰が私が間違っていたか知っていますか?この中アクセスクエリをExcelテーブルにインポートするときに「無効なプロシージャの呼び出しまたは引数」が発生する
Wsht.ListObjects(tbl).Range("A1").CopyFromRecordset (rs)
変更、それを::
Wsht.ListObjects(tbl).Range(2, 1).CopyFromRecordset rs
'button on excel form runs procedure to remove current data in table then
'import data from query in MS access database
Sub ImportData()
Call CleanTheTable("MMPres_MainData", "MainData")
Call ImportAccessData("qry_MMPres_Main", "MMPres_MainData", "MainData"
End Sub
'procedure finds database file and imports query into excel table
Sub ImportAccessData(qry As String, sht As String, tbl As String)
On Error GoTo ErrorHandler
Const dbLoc As String = "D:\AccessPractice\CTDB\CardiothoracicDB_v2_Current.accdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim bk As Workbook
Dim Wsht As Worksheet
Set bk = ActiveWorkbook
Set Wsht = bk.Worksheets(sht)
Set db = DBEngine.OpenDatabase(dbLoc)
Set rs = db.OpenRecordset(qry, dbOpenSnapshot)
Wsht.ListObjects(tbl).Range("A1").CopyFromRecordset (rs)
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
Set Wsht = Nothing
Set bk = Nothing
Exit Sub
ErrorHandler:
Application.StatusBar = ""
MsgBox ("Error: " & Err.Number & " " & Err.Description)
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
Set Wsht = Nothing
Set bk = Nothing
End Sub
行をコメントアウトし、どちらがエラーを発生させるかを確認してください。 – Parfait
あなたの参照でDAOを参照していますか? –
( 'Microsoft Office 16.0 Accessデータベースエンジンオブジェクト'、ここで '16.0'はあなたのオフィスバージョンです。) –