在创建幻灯片之前创建 python 个 PPTX 内部超链接
Creating python PPTX Internal Hyperlinks prior to creating slides
话题Python PPTX Internal Hyperlink
有没有办法在创建链接到的幻灯片之前创建超链接?
例如创建一个 table 内容幻灯片,其中包含指向稍后将添加的幻灯片的超链接,幻灯片的数量不会始终与用户编辑的数量相同。
我怀疑。直截了当的方法当然行不通,但也难说从不违背人类的聪明才智。
无论如何,这种机制的工作方式是基于 PowerPoint 超链接行为,只有特殊的“动作”动词表示“在内部跳转”而不是“跳转到网址”。这种情况下的动词是 NAMED_SLIDE
(尽管 NEXT_SLIDE
、LAST_SLIDE
等也可用)。 XML 中幻灯片的“名称”是它的关系 ID,基本上是一个类似 "rId7"
的关键字,用于将一个 PPTX 包部分(例如幻灯片)映射到另一个。
由于还没有幻灯片,所以不可能有关系。拥有这样一个“悬而未决”的关系很可能会引发修复错误,但我看不出它在任何情况下都能解决问题。创建新幻灯片将创建一个新关系,而不考虑已经存在的关系,因此最好的情况是您的“创建前”关系被忽略。
我认为您需要不同的策略。
有趣的问题。这是我在使用幻灯片上当前选定的形状时发现的。我希望您改为将 hyperlinks 应用于文本范围,但总体思路是相同的。
另一张幻灯片的 hyperlink 不包含 .Address,而 .SubAddress 看起来像:
SlideID,SlideIndex,SlideTitle
SlideTitle 可以是空白的,所以我用这个测试 link 到不存在的第三张幻灯片:
Activewindow.Selection.ShapeRange(1).ActionSettings(1).Hyperlink.subaddress = ",3,"
没有错误,但是 link 也不起作用。
这确实有效,但是:
Activewindow.Selection.ShapeRange(1).ActionSettings(1).Hyperlink.subaddress = "258,3,"
我 运行 在第一张幻灯片的选定形状上添加此幻灯片,然后添加第三张幻灯片,然后 link 跳转到它。
然后技巧就变成了:您如何知道 SlideID 是什么,您还没有添加这张幻灯片?在新演示文稿中,PPT 将为第一张幻灯片提供 ID 256 并为您添加的每张新幻灯片递增 ID,但是如果您在随机位置添加新幻灯片,跟踪 SlideID 和 SlideIndexes 将非常棘手在演示文稿中,可能事先添加和删除了幻灯片。
就个人而言,我想我会提前添加空白幻灯片,link,然后添加任何必要的内容。
话题Python PPTX Internal Hyperlink
有没有办法在创建链接到的幻灯片之前创建超链接?
例如创建一个 table 内容幻灯片,其中包含指向稍后将添加的幻灯片的超链接,幻灯片的数量不会始终与用户编辑的数量相同。
我怀疑。直截了当的方法当然行不通,但也难说从不违背人类的聪明才智。
无论如何,这种机制的工作方式是基于 PowerPoint 超链接行为,只有特殊的“动作”动词表示“在内部跳转”而不是“跳转到网址”。这种情况下的动词是 NAMED_SLIDE
(尽管 NEXT_SLIDE
、LAST_SLIDE
等也可用)。 XML 中幻灯片的“名称”是它的关系 ID,基本上是一个类似 "rId7"
的关键字,用于将一个 PPTX 包部分(例如幻灯片)映射到另一个。
由于还没有幻灯片,所以不可能有关系。拥有这样一个“悬而未决”的关系很可能会引发修复错误,但我看不出它在任何情况下都能解决问题。创建新幻灯片将创建一个新关系,而不考虑已经存在的关系,因此最好的情况是您的“创建前”关系被忽略。
我认为您需要不同的策略。
有趣的问题。这是我在使用幻灯片上当前选定的形状时发现的。我希望您改为将 hyperlinks 应用于文本范围,但总体思路是相同的。
另一张幻灯片的 hyperlink 不包含 .Address,而 .SubAddress 看起来像:
SlideID,SlideIndex,SlideTitle
SlideTitle 可以是空白的,所以我用这个测试 link 到不存在的第三张幻灯片:
Activewindow.Selection.ShapeRange(1).ActionSettings(1).Hyperlink.subaddress = ",3,"
没有错误,但是 link 也不起作用。
这确实有效,但是:
Activewindow.Selection.ShapeRange(1).ActionSettings(1).Hyperlink.subaddress = "258,3,"
我 运行 在第一张幻灯片的选定形状上添加此幻灯片,然后添加第三张幻灯片,然后 link 跳转到它。
然后技巧就变成了:您如何知道 SlideID 是什么,您还没有添加这张幻灯片?在新演示文稿中,PPT 将为第一张幻灯片提供 ID 256 并为您添加的每张新幻灯片递增 ID,但是如果您在随机位置添加新幻灯片,跟踪 SlideID 和 SlideIndexes 将非常棘手在演示文稿中,可能事先添加和删除了幻灯片。
就个人而言,我想我会提前添加空白幻灯片,link,然后添加任何必要的内容。