【问题标题】:Dynamically update text in powerpoint using VBA使用 VBA 动态更新 powerpoint 中的文本
【发布时间】:2013-03-05 09:39:09
【问题描述】:

我有一份在 PowerPoint 中生成的报告,在许多图表下方,有文字告诉读者参考附录中的页面。我希望能够动态引用这些幻灯片。

例如,在图表下我可能有文本“请参阅第 54 页附录”,但我需要将 54 链接到一张幻灯片,这样如果我插入另一张幻灯片,它就会显示为 55。

这可以在 VBA 中实现吗?我不希望有人为我编写代码,我只是想知道在我花费数小时尝试这样做之前这样做是否合理。

旁注:在这里问一个关于 MS Office 的问题我感觉很糟糕,但是因为我认为它需要在 VBA 中实现(我不认为这个功能是默认内置的)我认为这是一个相关的问题。

【问题讨论】:

    标签: vba ms-office powerpoint


    【解决方案1】:

    在这里问这个没必要感到可怕。

    如何做到这一点:

    在 PPT 中,形状、幻灯片甚至演示文稿本身都可以有关联的标签集合;命名字符串值。例如,假设在 oSh 中引用了形状,您可以这样做:

    oSh.Tags.Add "AssociatedSlideId", "293"
    

    在这种情况下,您可以将此标签应用于您的图表; 293 将是您要引用的幻灯片的 SlideID。每张幻灯片在创建时都有一个唯一的 SlideID;当您移动幻灯片/添加/删除幻灯片时,SlideID 不会改变。

    从形状中读取标签:

    Debug.Print oSh.Tags("AssociatedSlideId")
    

    在这种情况下,将返回“293”。将其提供给 FindBySlideID 以获取幻灯片的 SlideIndex(即幻灯片在演示文稿中的序号位置)。或者,如果您想要显示在数字占位符中的幻灯片编号(通常,但并不总是与幻灯片索引相同),请询问 SlideNumber。

    Debug.Print ActivePresentation.Slides.FindBySlideID(clng("293")).SlideIndex
    

    您还可以标记文本框或其他要用于保存引用的形状,然后按照以下方式编写函数:

    Function ShapeTaggedWith(oSl as Slide, sTagName as String, sTagValue as String) as Shape
    

    这将遍历幻灯片 oSl 上的形状,寻找带有名为 sTagName, value = sTagValue 的标记的形状,如果找到,则将其返回给调用者。

    现在您可以找到指定为图表标题的形状,让我们调用它,并更改其文本以匹配图表应该引用的幻灯片的 SlideIndex(或 SlideNumber)。

    希望这一切都比较清楚;如果没有,这就是 StackOverflow 之神给我们 cmets 的原因。

    【讨论】:

    • 你是救生员。我明天可能需要澄清实施它,但这非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多