我正在开发一个插件来自动化一些报告。
- 有一个报告模板 PowerPoint 文件,其中包含指向各种图表和表格的图像文件的链接。 (见附件)
- 当用户单击“添加到活动报告”按钮时,相应的图像文件将被覆盖,以便新图表或表格将显示在报告中。
我遇到的问题是我需要更新 PowerPoint 文档中的链接。我希望能够说“创建新报告”,将模板和默认图像复制到新文件夹中,并更新新 PowerPoint 文件中的链接,以便指向新文件夹中的图像文件而不是模板文件夹中的图像文件。任何想法我可以如何做到这一点?
非常感谢,
约翰
你好@约翰摩尔,我遇到了类似的情况,我知道在 power point 中使用企业模板不断更新软件包很困难,并且需要从 Anova、可变性图表、Cpk 报告等更新大约 300 张图像,在 JMP 中创建,其中每个 power point 软件包都包含“基本相同图表”,总是在同一个地方,唯一的区别是特定报告所需的原始数据。
我并不是真正的 VBA 专家,但是当您需要某些东西时,您会不断地到处搜索并反复试验,直到您可以制定/找到解决方案。
这是我遵循的方法,也许到目前为止你有类似的东西:
- 在 JMP 中,通过 JSL 将您的分析(图像)发送到您 PC 中的文件夹,并为每个图像分配一个特定的名称(切勿将它们命名为相同,因为那样只会覆盖)。 一旦您在 power point 中自定义每个特定图像的位置并为每个图像创建链接。将其保存为宏文件(这将是您的模板)。
- 在您需要新报告时随时打开您的模板并运行宏。
- 最后将文件另存为无宏并使用不同的名称,以使模板与图像准备好下次使用。
希望这对您有所帮助,我强烈建议您将密码输入宏以避免更改脚本。
问候。
子 LinkedGraphsToPictures()
'由 Andres Gonzalez 创建,2019 年 3 月
'目的:将链接的图形变为常规图像
将 shp 变暗为形状
将 sld 调暗为幻灯片
将图片暗淡为形状
将 shp_left 调暗为 Double
将 shp_top 调暗为 Double
暗淡 sld_count As Long
'在 ActivePresentation 中循环遍历每张幻灯片
对于 ActivePresentation.Slides 中的每个 sld
对于 sld_count = ActivePresentation.Slides.Count 到 1 步 -1
' 倒数到-1,避免因图表被删除而跳过图表
设置 sld = ActivePresentation.Slides(sld_count)
对于 sld.Shapes 中的每个 shp
如果 shp.Type = msoLinkedPicture 则
'获取当前位置
shp_left = shp.Left
shp_top = shp.Top
'复制/粘贴为图片
shp.复制
sld.Shapes.PasteSpecial 数据类型:=ppPastePNG
设置 pic = sld.Shapes(sld.Shapes.Count)
'删除连接的形状
shp.删除
'重新定位新粘贴的图片
pic.Left = shp_left
pic.Top = shp_top
万一
下一个
下一个 sld_count
下一个
结束子