
私は PowerPoint プレゼンテーションに取り組んでいますが、実際のプレゼンテーション中に画面に情報、つまりプレゼンテーションの出席者から提供された情報を追加する必要があります。
そこで、開発タブからテキストボックスを追加し、プレゼンテーション中にデータを入力できるようになりました。問題ありません。
しかし、新しいスライドをクリックしたときに入力したデータを維持することはできますか?
次のスライドに進むと、入力した情報が消えてしまいます。その後のスライドでも情報を保持する方法はありますか?
前もって感謝します。
答え1
情報はそのまま消えるわけではなく、最初に入力したスライドに戻ったときにもそこに残っています。他のスライドの ActiveX テキスト ボックスには自動的に表示されなくなるだけです。
テキスト ボックスの Lost Focus イベントは、あるスライドから次のスライドに移動すると発生するため、Lost Focus イベント内の一部のコードでは、プレゼンテーション内の各スライドを調べ、任意のテキスト ボックス コントロール内のテキストを蓄積し、各テキスト ボックス内のテキストを蓄積されたテキストと一致させることができます。
これは完璧ではありませんが、試してみたい場合は、まずはこれです。このコードを各コントロールの LostFocus イベントに適用します。さらにサポートが必要な場合は、ここではなく、PowerPoint と VBA のタグを付けて StackOverflow に質問を投稿してください。
Private Sub TextBox1_LostFocus()
Dim oSl As Slide
Dim oSh As Shape
Dim sText As String
On Error Resume Next
' Accumulate text from all ActiveX text boxes
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.Type = msoOLEControlObject Then
sText = sText & oSh.OLEFormat.Object.Text
End If
Next
Next
' Apply the accumulated text
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.Type = msoOLEControlObject Then
oSh.OLEFormat.Object.Text = sText
End If
Next
Next
End Sub