首页 > 解决方案 > 从 Excel VBA 运行访问查询

问题描述

我正在尝试在 excel vba 中编写一个宏,它只是打开一个访问数据库并在访问中运行 2 个查询。它似乎每单击 2 次宏按钮就可以工作并运行查询。我的意思是我点击它,它可以工作,第二次点击我在第二次点击时得到一个“运行时错误 462”,第三次点击它可以工作,第四次点击我再次得到错误,依此类推。我似乎无法弄清楚这是为什么。这是下面的代码。

Sub QueryAccess1()

Dim db As Access.Application
Set db = New Access.Application
'set variables

db.Visible = True

db.OpenCurrentDatabase ("DatabaseFileName")
'open database

'--------------------------------------------------------------
On Error Resume Next

db.DoCmd.DeleteObject acTable, "TableName"
'if the table does not exist it skips this line
'--------------------------------------------------------------

On Error GoTo 0
'sets the error back to normal

'--------------------------------------------------------------
CurrentDb.Openrecordset ("QUERY1")
CurrentDb.Execute ("QUERY2")
'Calls the queries
'--------------------------------------------------------------

'--------------------------------------------------------------
db.CloseCurrentDatabase
db.Quit
'Closes Access
'--------------------------------------------------------------

Set db = Nothing

End Sub

当我收到错误时,我将其上线

CurrentDb.Openrecordset ("QUERY1")

标签: vbaexcelms-access

解决方案


我设法让它与 Parfait 的方法一起工作。这就是我所拥有的。

Sub QueryAccess1()

Dim conn As Object, rst As Object
Dim path As String


Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")

path = Sheets("SheetName").Range("A1")

'OPEN CONNECTION
conn.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & path

'DELETES TABLE CONTENTS
conn.Execute "DELETE FROM [Table1]"

'RUN UNION QUERY AND INSERT INTO TABLE
rst.Open "SELECT * FROM [Query1]", conn
conn.Execute "INSERT INTO [Table1]  select * from [QUERY1] "

Set rst = Nothing: Set conn = Nothing

End Sub

推荐阅读