PowerPoint VSTO Text Changedイベントをキャプチャするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/295043

  •  08-07-2019
  •  | 
  •  

質問

PowerPoint C#VSTOアドインを開発しています。スライドのタイトルテキストが変更されるたびに、テキスト変更イベントをキャプチャできるようにします。

タイトルテキストが変更されるたびに起動するカスタムイベントハンドラーを添付するにはどうすればよいですか

役に立ちましたか?

解決

2つのこと:1)これはVBAにありますが、C#とVSTOに簡単に移植できる必要があります。2)「テキストが変更されました」少し難しいです。 「タイトルボックスにあなたがいる」限りあなたを得ることができます。 -残りの部分はより重要です。それは、元の状態と変化を見つけることに関係しています。おそらく実行可能です、まだ実行していません。

PPT VBAで選択の変更をフックするには、1つのクラスと1つのモジュールが必要です。クラスで、これを置きます:

Public WithEvents PPTEvent As Application
Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
    With Sel
        If .Type = ppSelectionText Then
            Dim sh As Shape: Set sh = .ShapeRange(1)
            If sh.Type = msoPlaceholder Then
                originalText = sh.TextFrame.Text
                Dim placeHolderType As Integer
                placeHolderType = sh.PlaceholderFormat.Type
                If placeHolderType = ppPlaceholderTitle Then
                    MsgBox "this is a title placeholder"
                End If
            End If
        End If
    End With
End Sub

クラスに「clsPPTEvents」という名前を付けます。次に、任意のモジュールに以下を追加します。

Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
    Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
    Set newPPTEvents.PPTEvent = Nothing
    Set newPPTEvents = Nothing
End Sub

StartEventsで F5 を押すと、フックが有効になります。 EndEventsでF5を押して無効にします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top