【问题标题】:Why am I unable to assign a PowerPoint chart to a chart variable in VBA?为什么我无法将 PowerPoint 图表分配给 VBA 中的图表变量?
【发布时间】:2017-01-31 22:39:52
【问题描述】:

目前,我只是尝试按照说明进行操作 here,但我之前遇到过这个问题。出于某种原因,我无法将 PowerPoint 图表分配给已声明的 Chart 变量。使用 .HasChart,我已经确认那里肯定有一个图表,并且使用 Shapes(i).Type,我已经确认 Shape 是图表类型,但我得到运行时错误“13”:类型每次都不匹配。我已经在多个文件和多种图表类型中尝试过,但无济于事 - 我一定遗漏了一些明显而愚蠢的东西,但我无法弄清楚。

例如:

Dim plot As Chart

For Each shp In PPT.Slides(5).Shapes

    If shp.HasChart Then

        MsgBox (shp.Type)
        Set plot = shp.Chart 

    End If

Next shp

有什么想法吗?

【问题讨论】:

    标签: vba excel powerpoint


    【解决方案1】:

    因为PowerPoint.ChartExcel.Chart 不同(请参阅下面的注释...)。试试:

    Dim plot As PowerPoint.Chart
    

    当您执行Dim plot as Chart 时,因为ChartExcel 对象模型的成员,VBA 将默认使用Excel.Chart,除非另有说明。

    以上假设与对 PowerPoint 库的引用进行早期绑定。如果您收到类似“未定义用户定义类型”的编译错误,这意味着您尚未设置对 PowerPoint 的项目引用。或者,您可以Dim plot as Object(通用对象类型),但那样会失去智能感知。

    注意:从功能上讲,PowerPoint.ChartExcel.ChartWord.Chart 等基本相同,它们将具有相同的方法、属性等,并且几乎没有例外(我不能很容易想到)你可以对一个人做的任何事情,你都可以对另一个人做。唯一的问题是,当您指的是驻留在 PowerPoint 中的图表时,严格来说它不是 Excel.Chart,它需要被限定为 PowerPoint.Chart(或通用 Object type) 以避免不匹配错误。

    【讨论】:

    • 谢谢!当我声明变量时,自动填充让我可以选择两个图表变量之一,所以我认为这已经解决了,但我猜不是。感谢您解决了一个长期悬而未决的问题!
    • @tal 是的,两个不同的Charts 是 Excel 和 PowerPoint。可能 Excel 会首先出现在列表中,但我对此不是 100% 确定 :)
    • 我已经从下拉列表中尝试了两种选择,但都无济于事 - 我想即使是那些仍然存在一些歧义。
    • @tal 这实际上听起来是对的,现在你提到了它。我知道我在使用 Series 和其他在不同 MS Office 应用程序之间共享的对象类型时遇到了问题。
    • 该死的@DavidZemens 你怎么对 Power Point Charts 了解这么多?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2022-10-05
    • 1970-01-01
    • 2018-03-01
    • 2020-10-30
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多