【问题标题】:Use VBA to get data from chart points in PowerPoint使用 VBA 从 PowerPoint 中的图表点获取数据
【发布时间】:2015-04-18 08:57:33
【问题描述】:

我在 PowerPoint 中有一个气泡图,但“编辑数据”不起作用(Excel 进程打开,但电子表格没有 - 我已尝试在 this link 注册 DLL,但它没有工作)。所以我只想用 VBA 遍历图表中的所有点并获取相关的数据(debug.print 很好)。这包括每个点的三个数据值:x、y 和大小。不幸的是,PowerPoint 似乎只是将其视为一系列数据——y 值。我设置cht等于图表对象,然后sercol = cht.SeriesCollection,sercol.Count返回值1。如果我set ser = cht.SeriesCollection(1)vals = ser.Values,我可以遍历所有并打印y坐标的值,但是我不知道如何获得 x 坐标和大小(cht.SeriesCollection(2) 无效)。有没有办法获取与气泡图中的点关联的其他两个数据值?

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    如果我set ser = cht.SeriesCollection(1)vals = ser.Values,我可以遍历所有并打印y坐标的值,但我不知道如何到达x坐标

    Dim xVals as Variant
    xVals = ser.XValues
    Debug.Print Join(xVals, ", ")
    

    和大小(cht.SeriesCollection(2) 无效)。

    如果图表只有一个系列,不确定为什么要尝试这样做,这会引发错误(预期),下标超出范围。

    对于气泡大小,系列有一个.BubbleSizes 属性,它应该返回一个字符串:

    Dim bbls
    bbls = ser.BubbleSizes
    Debug.Print bbls
    

    在你的情况下它可能会返回一个数组,如果是这样,你只需要稍微调整一下。

    【讨论】:

    • XValues 正是我所需要的——谢谢!在大小上,气泡图具有三个值——x、y 和大小(因此它会绘制点,然后根据该大小值调整点的大小)。如果“编辑数据”有效,您会看到每行包含三个值的 Excel 工作表,我正在尝试获取这些值。所以我有点认为会有三个 SeriesCollections,但只有一个(它与 y 值对齐)。从那以后我发现了 MarkerSize 属性,虽然我还没有让它工作,但我认为我需要使用它(我一直在寻找 Size 属性,所以我错过了 MarkerSize)。
    • SeriesCollection 是图表中 系列 的集合,而不是每个系列的属性集合 :) 每个系列都由 XValue 和 YValue 组成。我不认为MarkerSize 是你要找的东西。等一下,我找到了你要找的东西,我会修改:)
    • 我想我明白了——所以系列真的是整个数据集合吗?不是单个数据系列构成整体(我将 x 视为一个系列,y 视为一个系列,将大小值视为一个系列)?那个宽度效果很好!非常感谢!
    • 不... series 是一个系列。 SeriesCollection 是图表中所有 Series 对象的集合。
    猜你喜欢
    • 2011-09-15
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多