2013-05-03 134 views
1

新手在这里。在互联网上找到以下代码。它已存在多年。我已经为我的应用程序定制了它。更新了MS Office 12.0访问数据库引擎库的参考。我一直在.Parameters行出现3265错误。该查询在Access内运行良好,我已经能够使用此代码拉入非参数查询。检查拼写正常。参数中的“Rez ID”是一个别名。实际的标题是AIANHH。已经尝试了别名和实际标题的所有组合,但仍得到3265 at。参数
由于Excel中的特定格式,不想执行推送。试图避免MS Query,因为我已经在Access中有一切正常工作。我有很多查询,不想从MS Query重新开始。我注意到的唯一区别是,在Access中,条件格式为:[“Rez ID”]试图移动[]和“没有成功。似乎我很接近让这个工作,但无法克服驼峰。任何帮助,将不胜感激。将Access Access accdb查询导入Excel 2007错误3265

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

您是否试图在where语句中添加参数?你写出的实际查询是什么? – scott 2013-05-03 17:52:44

+0

查询是访问,并在访问SELECT DISTINCT aiangeo.SUMLEV工作正常,AIANSF_Segment_031.CHARITER,aiangeo.AIANHH,aiangeo.TTRACT,AIANSF_Segment_031.PCT0030001,AIANSF_Segment_031.PCT0040001,AIANSF_Segment_031.PCT0030002,AIANSF_Segment_031.PCT0040002,AIANSF_Segment_031.PCT0030106, AIANSF_Segment_031.PCT0040003 FROM(AIANSF_Segment_031 INNER JOIN aiangeo ON AIANSF_Segment_031.LOGRECNO = aiangeo.LOGRECNO)INNER JOIN AIANSF_Segment_01 ON aiangeo.LOGRECNO = AIANSF_Segment_01.LOGRECNO WHERE(((aiangeo.SUMLEV)= “250”)AND((aiangeo.AIANHH )= [“Rez ID”])); – user2347038 2013-05-03 23:24:26

+0

我是新来这个论坛,所以仍然试图找出语法我只是想从MyQueryDef从Excel中调用查询 – user2347038 2013-05-03 23:28:43

回答

0

好吧我想通了。我不得不向Access Query添加一个Like语句。我不知道为什么,但现在一切正在工作。