2017-07-08 6 views
1

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 
+0

行をコメントアウトし、どちらがエラーを発生させるかを確認してください。 – Parfait

+0

あなたの参照でDAOを参照していますか? –

+0

( 'Microsoft Office 16.0 Accessデータベースエンジンオブジェクト'、ここで '16.0'はあなたのオフィスバージョンです。) –

答えて

0

あなたがDAOのために必要なライブラリの参照を設定していたと仮定すると、あなたが得るエラーは、このライン上にありますまた可能:

要約する
Wsht.ListObjects(tbl).HeaderRowRange.Offset(1).CopyFromRecordset rs 

1-第二列から始まるレコードをコピーし、(行1)テーブルのヘッダを上書きしてはいけない(rs)

2-周りに括弧を取り除きます。

3-方法ListObjectRangeは少し混乱して、それはテーブルの全範囲を返すが、直接「A1-スタイル」参照を供給することができない、それはより多くのワークシートのCells方法のように動作します。

+0

、ありがとうございました! – VkBk

+0

@VkBkよろしくお願いします。あなたの問題解決に役立つ[回答を受け入れる](https://stackoverflow.com/help/someone-answers)を検討してください。 –

関連する問題