使用VBA动态更新powerpoint中的文本

时间:2013-03-04 20:08:14

标签: vba ms-office powerpoint

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

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

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

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

1 个答案:

答案 0 :(得分:4)

这里不需要感到可怕。

如何做到这一点:

在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众神给我们评论的原因。