有时查询数据不完整-使用VBA将结果拉入Excel

有时查询数据不完整-使用VBA将结果拉入Excel,excel,ms-access,vba,Excel,Ms Access,Vba,我在Access DB('10)中设置了一个查询。我的用户将参数输入Excel工具(“10”),该工具使用VBA将查询结果拉入Excel工具 问题:有时(我猜是1/50次)它会提取不完整的数据,我不明白为什么 使我困惑的是前后矛盾。我最好的猜测是有什么原因导致最后一段代码提前激活并关闭连接。但我不确定为什么它会偶尔这样做 代码: 我稍微更新了代码以包含一些错误捕获。这个问题一直存在 我是个大白痴 我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,

我在Access DB('10)中设置了一个查询。我的用户将参数输入Excel工具(“10”),该工具使用VBA将查询结果拉入Excel工具

问题:有时(我猜是1/50次)它会提取不完整的数据,我不明白为什么

使我困惑的是前后矛盾。我最好的猜测是有什么原因导致最后一段代码提前激活并关闭连接。但我不确定为什么它会偶尔这样做

代码: 我稍微更新了代码以包含一些错误捕获。这个问题一直存在

我是个大白痴

我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,但它是在过程的后期发生的。事实上,所有的原始数据都进入了这个工具。我的道歉--

我是个大白痴


我让一个用户在工具出错时给我发了一份副本,试图深入研究这个问题,并意识到虽然不是所有的数据都在填充,但它是在过程的后期发生的。事实上,所有的原始数据都进入了这个工具。很抱歉-\u-

您的错误处理设置有多好?我在上面的代码中添加了一些基本的错误捕获。您的错误处理设置有多好?我在上面的代码中添加了一些基本的错误捕获。
Sub ParameterQuery_Awesome()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False

On Error GoTo Whoa

'Step 1: Declare your variables
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset

'Step 2: Identify the database and query
Set MyDatabase = DBEngine.OpenDatabase _
("\\folders\Awesome.accdb")
Set MyQueryDef = MyDatabase.QueryDefs("AwesomeQuery")

'Step 3: Define the Parameters
With MyQueryDef
.Parameters("[Enter Parameter:]") = [Parameter].Value
End With

'Step 4: Open the query
Set MyRecordset = MyQueryDef.OpenRecordset

'Step 5: Clear previous contents
[DataInputRange].ClearContents

'Step 6: Copy the recordset to Excel
[DataInput].CopyFromRecordset MyRecordset

'MsgBox "Your Query has been Run"

LetsContinue:
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

On Error Resume Next

MyRecordset.Close
MyQueryDef.Close
MyDatabase.Close

Set MyRecordset = Nothing
Set MyQueryDef = Nothing
Set MyDatabase = Nothing

On Error GoTo 0
Exit Sub

Whoa:
MsgBox "Oh noes!!1" & vbCrLf & _
"Error Description :" & Err.Description & vbCrLf & _
"Error at line     :" & Erl & vbCrLf & _
"Error Number      :" & Err.Number

Resume LetsContinue  

End Sub