0

C# のドキュメント コンテンツにリンクされたカスタム ドキュメント プロパティを PowerPoint で作成したいと考えています。

さまざまな例を見つけましたが、それらはすべてドキュメント コンテンツにリンクせずにカスタム ドキュメント プロパティを作成します。

私が達成したいのは、ユーザーが任意の形状のテキストを選択し、ボタンをクリックすることで、カスタム ドキュメント プロパティがソースへのリンクと共に作成されることです。後で取得して、リンクされたコンテンツにオンデマンドでジャンプできるようにしたいと考えています。

私が使用しているコードスニペットは次のとおりです。

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

上のコメントを参照してください。

ユーザーが「ブックマーク」の 1 つを作成すると、コードで対象の図形にタグを追加できます。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 に答える