【问题标题】:PowerPoint Add-in directly access its objectPowerPoint 加载项直接访问其对象
【发布时间】:2014-03-03 15:42:58
【问题描述】:

Powerpoint 文件实际上是一个包含 xml 子文件的 zip 文件。这些子文件说明了每张幻灯片对象的所有属性(例如位置、颜色、动画等)。您可以将 pptx 文件转换为 zip 文件并解压缩它,您将看到子 xml 文件。

现在,我想创建一个 Powerpoint 插件应用程序,允许我向特定对象添加更多信息,并将其动态存储在 XML 文件本身中(或将文件另存为时)。例如,我的加载项 PowerPoint 应用程序包含一个名为“可翻转”的按钮。当我选择幻灯片的特定对象,并选择“Flippable”时,我的应用程序会找到包含该对象信息的 xml 文件,并添加标签“Flippable = true”。

是否可以在运行应用程序时动态执行此操作? 谢谢

【问题讨论】:

    标签: vba c#-4.0 add-in powerpoint


    【解决方案1】:

    假设您甚至可以在PPT中打开演示文稿时,为什么还要花所有精力破解和解析XML文件,特别是因为您已经通过加载项执行此操作?

    您提到用户选择了一个形状。为什么不直接标记形状:

    With ActiveWindow.Selection.ShapeRange(1)
      .Tags.Add "Flippable", "Yes"
    End With
    

    您需要更多的代码来确保有一个选择,如果您想允许一次标记多个形状,您需要放入 For Each/Next 循环中。

    然后假设在 oSh 中引用当前要测试的形状

    If oSh.Tags("Flippable")="Yes" Then
       ' Do your stuff
    End If
    

    【讨论】:

    • 不正确。结果是标签“Flippable”和“True”将存储在单独的文件名“Tags.xml”中。幻灯片的信息将存储在另一个名为“slide1.xml”的文件中。并且标签“flippable”与“slide1.xml”中的给定对象之间没有关系
    • 对不起。你错了,你显然甚至没有费心去尝试。我不会再为您提供任何进一步的建议了。
    • 你是什么意思@Steve?意思是没有办法在Powerpoint的xml文件中嵌入额外的信息?
    • 如果您尝试一下,您会发现以这种方式应用的标签确实出现在 XML 中。如果您需要直接修改 XML,首先以这种方式进行会产生如何进行的工作示例。
    • 使用我上面展示的代码添加标签。将其添加到演示对象、幻灯片对象、形状对象中,没关系。然后保存演示文稿并查看 XML。如果你不相信在那之后还有关系,我可以建议的不多。
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多