MS Access 运行时错误 '3011 显示在一个代码中,但不在另一个代码中

Posted

技术标签:

【中文标题】MS Access 运行时错误 \'3011 显示在一个代码中,但不在另一个代码中【英文标题】:MS Access Run-time error '3011 displayed in one code but not in anotherMS Access 运行时错误 '3011 显示在一个代码中,但不在另一个代码中 【发布时间】:2018-10-05 00:21:40 【问题描述】:

周年快乐,祝这个社区一切顺利 我正在尝试学习使用 DoCmd.TransferSpreadsheet 将查询和图表导出到 Excel 在我的数据库中,我有两个表格可以在每个表格中导出一个查询到 Excel 并创建一个图表 在每个表单中,用户在文本框中选择一个值,然后在表单上显示一个图像 在窗体 frm_createxlstacked 中,用户选择两个日期并单击命令按钮以将查询导出到 Excel 并创建一个 xlClustered 图表。此 VBA 代码运行良好。

这是 createxlstacked 的 VBA 代码

Private Sub cmbexpqry_stacked_Click()

Dim wb As Object
Dim xl As Object
Dim sExcelWB As String
Dim ws As Worksheet
Dim r As Range
Dim ch As Object ''Excel.Chart
Dim mychart As ChartObject
Dim myMax, myMin As Double
Dim qry_createxlstacked As Object
Dim fullPhotoPath   As String

If IsNull(Me.cbxclstacked.Value) Then Exit Sub
Dim wb As Object, xl As Object, ch As Object, mychart As ChartObject
Dim fullPhotoPath   As String

fullPhotoPath = Add_PlotMap(Form_frm_createxlstacked.cbxclstacked.Value)
Set xl = CreateObject("excel.application")
On Error Resume Next
Kill TrailingSlash(CurrentProject.Path) & Form_frm_createxlstacked.cbxxlstacked.Value & "qry_createxlstacked.xlsx"
Err.Clear
On Error GoTo 0
sExcelWB = TrailingSlash(CurrentProject.Path) & "qry_createxlstacked.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "qry_createxlstacked.xlsx", sExcelWB, True
Set wb = xl.Workbooks.Open(sExcelWB)
Set ws = wb.Sheets("qry_createxlstacked.xlsx")
Set ch = ws.Shapes.AddChart.Chart
Set mychart = ws.ChartObjects("Chart 1")
ws.Shapes.AddPicture fullPhotoPath, msoFalse, msoCTrue, r.Left, r.Top, 500, 250

With ch
    .ChartType = xlColumnClustered
    .SeriesCollection(2).AxisGroup = 2
    .SeriesCollection(2).ChartType = xlLineMarkers
    .ChartGroups(1).GapWidth = 69
    .ChartArea.Height = 250
    .ChartArea.Width = 550
End with

wb.Save
xl.Visible = True
xl.UserControl = True
Set ws = Nothing
Set wb = Nothing

End Sub

在窗体 frm_creategannt 中,用户选择两个日期并单击命令按钮以将查询导出到 Excel 并创建一个 xlClustered 图表,但是,VBA 显示: 运行时错误“3011”。 Microsoft Office Access 数据库引擎找不到对象“qry_creategantt.xlsx”。确保该对象存在并且您...

这是 VBA 代码

Private Sub cmbexpqry_gantt_Click()

If IsNull(Me.cmbexpqry_gantt) Then Exit Sub
Dim wb As Object
Dim xl As Object
Dim sExcelWB As String
Dim ws As Worksheet
Dim r As Range
Dim ch As Object ''Excel.Chart
Dim mychart As ChartObject
Dim qry_creategantt As Object
Dim fullPhotoPath   As String

fullPhotoPath = Add_PlotMap(Form_frm_creategantt.cbxcreategantt.Value)
Set xl = CreateObject("excel.application")
On Error Resume Next
Kill TrailingSlash(CurrentProject.Path) & Form_frm_creategantt.cbxcreategantt.Value & "qry_creategantt.xlsx"
Err.Clear
On Error GoTo 0
sExcelWB = TrailingSlash(CurrentProject.Path) & "qry_creategantt.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "qry_creategantt.xlsx", sExcelWB, True
Set wb = xl.Workbooks.Open(sExcelWB)
Set ws = wb.Sheets("qry_creategantt.xlsx")
Set ch = ws.Shapes.AddChart.Chart
Set mychart = ws.ChartObjects("Chart 1")
ws.Shapes.AddPicture fullPhotoPath, msoFalse, msoCTrue, r.Left, r.Top, 500, 250

With ch
    .ChartType = xlBarStacked
End With

wb.Save
xl.Visible = True
xl.UserControl = True
Set ws = Nothing
Set wb = Nothing 

End Sub

错误是'3011'出现在这一行: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, qry_creargantt.xlsx", sExcelWB, True

我一一比较了每一行代码。 另外,我检查了每个表单的查询。

我需要修复运行时错误“3011”以开始测试 VBA 代码以创建甘特图

在我看来,我没有发现错误,但我被卡住了

感谢您在错误代码中的回复、建议和努力。

【问题讨论】:

错误信息是什么? 【参考方案1】:

如果错误发生在您所指出的DoCmd.TransferSpreadsheet 行,则错误非常明显。

您已告诉 Microsoft Access 运行名为 qry_creategantt.xlsx 的查询(以便将该数据导出到 Excel),并且该查询在您的数据库中不存在。

检查查询列表和代码中查询的拼写。在上面的问题中,您将那行代码重述为发生错误的位置,您对查询名称的拼写不同:qry_creargantt.xlsx。哪个拼写是正确的?那可能是你的问题。

【讨论】:

正确。写代码的时候一定要仔细检查拼写【参考方案2】:

不可能将查询“.anything”称为 .是访问查询名称中的非法字符。

因此,请仔细检查您所指的查询名称。因为它不是 qry_creategantt.xlsx

【讨论】:

我同意,但 OP 声称代码在第一个过程中有效,所以我没有检查句点是否无效,但你是绝对正确的,句点不允许出现在对象名称中。很好的收获。

以上是关于MS Access 运行时错误 '3011 显示在一个代码中,但不在另一个代码中的主要内容,如果未能解决你的问题,请参考以下文章

运行时错误 3032,无法执行此操作 ms-access

MS Access 运行时错误 3999

没有任何动作显示在 MS Access 中单击的按钮即使没有任何错误显示

运行查询时出现运行时错误 3075 MS Access VBA

MS ACCESS VBA 运行时错误'3021';使用 .MoveNext

MS Access:为啥我的组合框显示错误的值?