通过 VBA 修改 Access 报告中的图表属性(错误 2771)

Posted

技术标签:

【中文标题】通过 VBA 修改 Access 报告中的图表属性(错误 2771)【英文标题】:Modify Chart properties in Access report via VBA (error 2771) 【发布时间】:2014-11-24 20:14:55 【问题描述】:

我正在构建一个 Access 报告(2010 版),并希望能够根据用户在表单上的选择对其进行自定义。当我运行它时,我收到错误 2771:您尝试编辑的绑定或未绑定对象框架不包含 OLE 对象。

这是传递参数的代码:

Private Sub Command120_Click()
    DoCmd.OpenReport ReportName:="rpt_EODGraph", View:=acViewPreview, _
      OpenArgs:=Me!Text0.Value
End Sub

这是打开报告的代码。

Private Sub Report_Open(Cancel As Integer)
    Dim ch As Chart
    Set ch = Me.Graph3.Object.Application.Chart 'This line generates the error
    ch.ChartTitle.text = OpenArgs
End Sub

我发现至少有人说这实际上是不可能在报告中做到的。 (http://www.access-programmers.co.uk/forums/showthread.php?t=177778&page=2 请注意,这是 2 页论坛讨论的第 2 页...)任何人都可以证实或反驳吗?

【问题讨论】:

尝试将您的代码放在“激活”事件而不是“打开”事件中。在满足记录源之前调用“打开”。 谢谢韦恩,但没有骰子。它以打印预览模式打开(我选择错误的 acView 选项不好),并在我更改为报告视图时给出相同的错误。将代码更改为 acViewReport 后,我​​在同一行收到相同的错误。 【参考方案1】:

显然,在 OLE 对象可访问之前,报表必须具有某种焦点。 如果你点击它或将焦点设置到某个东西就足够了:

Private Sub Report_Open(Cancel As Integer)
    Dim ch As Object
    Me.RandomButton.SetFocus
    Set ch = Me.Diagramm11.Object
    ch.ChartTitle.Text = "Hello"    
End Sub

这行得通。我只是在获得焦点的报告上设置了一个按钮。也许你会发现一些更优雅的东西;)

【讨论】:

以上是关于通过 VBA 修改 Access 报告中的图表属性(错误 2771)的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 报告“每个细节”格式化和 VBA 中的访问

如何通过 MS-Access VBA 中的 TextBox.OnKeyUp 属性传递 KeyCode

如何动态更改访问图表的行源

Access VBA 中的 AddNew 不添加新行或报告任何错误

使用 VBA 的 MS Access 打印报告

我希望从 ms-access 2013 数据库中的所有表单、报告和模块中导出 vba 源代码