2013-07-13 56 views
0

我想在链接到C#中的文档内容的Powerpoint中创建自定义文档属性。创建链接到文档内的内容的自定义Office文档属性

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

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

下面是我使用的代码片段:

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通过创建自定义属性手动执行它时,它可以像描述的那样工作here。我想以编程方式做同样的事情。

在MS引用它指出

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

也许它不能正确解析textRange变量?

有谁知道我该如何做这项工作?

+0

的联系是一个比较老的; PPT已经改变了很多,因为我找不到编辑/转到选项,并且当您添加一个链接到PPT 2010中的内容的属性时,它确实在其旁边显示了链接图标,但我看不到任何让它做任何事情的方法。 –

回答

0

看到上面的评论,但我认为可能有一个更可靠/可控的做你想做的方式。

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

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

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

要跳转到标记内容,这样的事情(在这里插入强制性aircode警告):

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 
相关问题