新手在这里。在网上找到以下代码。它已经存在多年了。我已经为我的应用程序定制了它。更新了对 MS Office 12.0 访问数据库引擎库的参考。我在 .Parameters 行不断收到 3265 错误。查询在 Access 中运行良好,我已经能够使用此代码提取非参数查询。检查拼写没问题。参数中的“Rez ID”是一个别名。实际航向是 AIANHH。已经尝试了别名和实际标题的所有组合,但在 .Parameter 处仍然得到 3265
由于 Excel 中的特定格式,不想进行推送。试图避免使用 MS Query,因为我已经在 Access 中一切正常。我有很多查询,不想从 MS Query 重新开始。我注意到的唯一区别是,在 Access 中,条件的格式为:["Rez ID"] 尝试移动 [] 和 ""没有成功。好像我很接近让它工作,但无法克服困难。任何帮助,将不胜感激。
Sub RunParameterQuery()
'Step 1: Declare your variables
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim i As Integer
'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase _
("C:\Users\Phil\Documents\Indians\Population & Employment\2010 Population\Census_Data_Set\MS2007_Files\2010_AIANSF_a_1_2_6_8_9_10.accdb")
Set MyQueryDef = MyDatabase.QueryDefs("Reservation_TTRACT")
'Step 3: Define the Parameters
With MyQueryDef
.Parameters("[Rez ID]") = Range("D3").Value
'.Parameters("[CHARITER]") = Range("D4").Value
End With
'Step 4: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset
'Step 5: Clear previous contents
Sheets("Sheet1").Select
ActiveSheet.Range("A6:K10000").ClearContents
'Step 6: Copy the recordset to Excel
ActiveSheet.Range("A7").CopyFromRecordset MyRecordset
'Step 7: Add column heading names to the spreadsheet
For i = 1 To MyRecordset.Fields.Count
ActiveSheet.Cells(6, i).Value = MyRecordset.Fields(i - 1).Name
Next I
MsgBox "Your Query has been Run"
End Sub