0

我想在 powerpoint 中创建一个自定义文档属性,该属性链接到 C# 中的文档内容。

我找到了各种示例,但它们都创建了自定义文档属性,而没有链接到文档内容。

我想要实现的是用户选择任何形状的文本,然后通过单击按钮,创建自定义文档属性以及指向源的链接。我希望能够稍后检索它并按需跳转到链接的内容。

这是我正在使用的代码片段:

Microsoft.Office.Core.DocumentProperties properties;
properties = (Office.DocumentProperties)this.myOCMModule.PowerPointApp.ActivePresentation.CustomDocumentProperties;
Microsoft.Office.Interop.PowerPoint.Selection powerPointSelection  = this.myMainOCMModule.PowerPointApp.ActiveWindow.Selection;
PowerPoint.TextRange textRange = powerPointSelection.TextRange;
properties.Add("Test1", true, Microsoft.Office.Core.MsoDocProperties.msoPropertyTypeString, textRange.Text, textRange);

自定义属性已创建,但链接无效。当我在 PowerPoint 中打开自定义属性时,自定义属性显示为带有断开的链接。

当 iIdo 通过创建自定义属性手动完成时,它会像这里描述的那样工作。我想以编程方式做同样的事情。

在 MS 参考中,它指出

指定链接的来源由容器应用程序定义。

也许它无法正确解析 textRange 变量?

有谁知道我怎样才能做到这一点?

4

1 回答 1

0

请参阅上面的评论,但我认为可能有一种更可靠/可控的方式来做你想做的事。

当用户创建您的“书签”之一时,您的代码可以向相关形状添加标签。在 VBA 中,这很简单:

oSh.Tags.Add "TagName", "Value of my tag"
' assuming oSh contains a reference to the shape you want to mark

您每次都使用相同的标签名称,但更改每个形状的标签值。

要跳转到标记的内容,如下所示(在此处插入强制性空气代码警告):

Sub JumpToTaggedContent(sTagValue as String)
Dim oSl as Slide
Dim oSh as Shape
  For Each oSl in ActivePresentation.Slides
    For Each oSh in oSl.Shapes
       If oSh.Tags("TagName") = sTagValue Then  ' you've found it
          ActiveWindow.View.GoToSlide(oSh.Parent.SlideIndex)
          oSh.Select
          Exit Sub
       End If
    Next
  Next
End Sub
于 2013-07-14T15:37:00.787 回答