
Я работаю над презентацией PowerPoint, в которую мне нужно добавить информацию на экран во время самой презентации, т. е. информацию, предоставленную присутствующими на презентации.
Итак, я добавил текстовое поле из вкладки «Разработчик» и могу вводить данные во время презентации. Никаких проблем.
Но смогу ли я затем сохранить те данные, которые я ввел, когда нажимаю на новый слайд?
Когда я перехожу к следующему слайду, введенная мной информация исчезает. Есть ли способ сохранить ее в следующих слайдах?
Заранее спасибо.
решение1
Информация не исчезает как таковая; она все еще будет там, когда вы вернетесь к слайду, где вы ее изначально ввели. Она просто не будет автоматически появляться в текстовом поле ActiveX на других слайдах.
Событие Lost Focus текстового поля срабатывает при переходе от одного слайда к другому, поэтому некоторый код в событии Lost Focus может просматривать каждый слайд презентации, накапливать любой текст в любом элементе управления текстового поля, а затем приводить текст в каждом текстовом поле в соответствие с накопленным текстом.
Это не идеально, но если вы хотите попробовать, это начало. Примените этот код к событию LostFocus каждого элемента управления. Для получения дополнительной помощи по этому вопросу задавайте вопросы на StackOverflow с тегами Powerpoint и VBA, а не здесь:
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