Запуск макроса в слайд-шоу PowerPoint не запускается, если сначала не выполнено вручную - PullRequest
0 голосов
/ 19 октября 2019

Я создаю слайд-шоу, чтобы отобразить некоторые статистические данные из таблицы SQL. Макрос не хочет запускаться, если я не запускаю его вручную один раз, поэтому я создал простой тест, чтобы увидеть, было ли это что-то с вызовом sql. Делаем это в PPT 2016.

Новая презентация с 3 слайдами, титульным листом и двумя для данных. Создано текстовое поле на слайдах 2 и 3. Сохранено как .pptm

Sub OnSlideShowPageChange()

    Dim i As Integer

    i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition

    If i = 1 Then Call ChangeData

End Sub

Sub ChangeData()

    If ActivePresentation.Slides(2).Shapes("TextBox 1").TextFrame.TextRange.Text = "Answer 1" Then
        ActivePresentation.Slides(2).Shapes("TextBox 1").TextFrame.TextRange.Text = "Answer A"
        ActivePresentation.Slides(3).Shapes("TextBox 1").TextFrame.TextRange.Text = "Answer B"
    Else
        ActivePresentation.Slides(2).Shapes("TextBox 1").TextFrame.TextRange.Text = "Answer 1"
        ActivePresentation.Slides(3).Shapes("TextBox 1").TextFrame.TextRange.Text = "Answer 2"
    End If

End Sub

Закройте презентацию. Откройте презентацию и запустите слайд-шоу. Он циклически перебирает 3 слайда и повторяет, как я хочу, но «данные» не меняются. Esc слайд-шоу и вручную запустить макрос ChangeData. Начните слайд-шоу снова. Теперь он циклически просматривает слайды и изменяет данные по своему усмотрению.

Есть идеи, почему сначала требуется запуск макроса? Я хотел бы перейти прямо к слайд-шоу или, что еще лучше, использовать средство просмотра ppt.

Редактировать:

После просмотра больше я нашел эту тему Как вы запускаете код vba при изменениислайды в powerpoint?

Итак, добавили ActiveX TextBox и удалили слайд со следующим кодом для элемента управления

Private Sub TextBox1_Initialize()

End Sub

Интересно, на презентации теста мне нужно нажать натитульный слайд, чтобы начать слайд-шоу, но когда я включаю элемент управления в свою фактическую презентацию, он работает просто отлично, без необходимости нажимать на первый слайд. Я также протестировал сохранение своей презентации в формате ppsm, и она все еще работает. Можно изменить данные sql и обновить таблицу слайдов по своему усмотрению.

Я включил предложение Сэма о Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow), а также протестировал его как orig и обе работы. Я также проверил, добавив метку ActiveX, но это не сработало, должен был быть TextBox или, возможно, другой, но не как метка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...