创建一个链接到文档内部内容的自定义office文档属性
本文关键字:文档 内部 自定义 属性 office 链接 一个 创建 | 更新日期: 2023-09-27 18:22:08
我想在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变量?
有人知道我该怎么做吗?
请参阅上面的评论,但我认为可能有一种更可靠/可控的方式来做你想做的事情。
当用户创建一个"书签"时,您的代码可以为有问题的形状添加一个标记。在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