Проблема с переключением опции черного экрана в PowerPoint 2010 через VBA - PullRequest
2 голосов
/ 04 октября 2010

Я пытаюсь определить, как зачеркнуть / разблокировать презентацию Powerpoint с помощью VBA.Я изменил макрос VBA, который нашел в сети (http://my.safaribooksonline.com/9780470634004/670?bookview=search - «Освоение VBA для Microsoft Office 2010; страница 670»)

Sub Test1()
    With ActivePresentation.SlideShowWindow.View
        .State = ppSlideShowBlackScreen
        .State = ppSlideShowRunning
    End With
End Sub

Установка состояния на ppSlideShowBlackScreen действительно делает экран черным,Согласно книге: «Чтобы отключить черный или белый экран и запустить шоу снова, установите для свойства State значение ppSlideShowRunning».

Если я запускаю его в PPT 2007, он работает как положено- это выглядит почти так, как будто ничего не произошло (я представляю, что экран чернеет на долю секунды и затем возвращается в нормальное состояние).Закомментировав вторую строку, вы увидите черный экран, который показывает, что это работает, как и ожидалось.

Однако, если я запускаю этот макрос в PPT 2010, экран становится черным и остается черным.Независимо от того, какое состояние я установил, я не могу вернуть экран в исходное состояние.

  • Я пробовал ppSlideShowWhiteScreen, и он показывает полностью белый экран, но это все.
  • Я тоже попробовал ppSlideShowPaused, но ничего не сделал

Если я использую опцию «Черный» в меню PPT, экран становится черным и опция меняетсяна "разблокировать" экран.Использование этого возвращает экран обратно в нормальное состояние.Кроме того, использование сочетания клавиш («b») переключает между черным и нормальным режимами.

Итак, в PPT 2010 должен быть способ сделать это, но по какой-то причине метод VBA не работаетправильно.Есть идеи?

Ответы [ 4 ]

2 голосов
/ 07 февраля 2011
Sub Test1()
    With ActivePresentation.SlideShowWindow.View
        .State = ppSlideShowBlackScreen
        If ppSlideShowDone Then
        .State = ppSlideShowWhiteScreen
        End If
    End With
End Sub
1 голос
/ 12 февраля 2012

После долгих хлопот я обнаружил, что отправка клавиши 'b' в SlideShowWindow была единственным решением.

ActivePresentation.SlideShowWindow.Activate
SendKeys "b", False
DoEvents
Application.Activate
0 голосов
/ 01 ноября 2016

В PowerPoint 2010 это работает для меня, переходя к следующему, затем к предыдущему слайду, а затем возвращаясь в режим «Выполнение».

ActivePresentation.SlideShowWindow.View.State = ppSlideShowBlackScreen

...do some stuff in "invisible" mode,
something like "screenupdating set to false" in excel or word...

'Unblack or unwhite screen
ActivePresentation.SlideShowWindow.View.Next
ActivePresentation.SlideShowWindow.View.Previous
ActivePresentation.SlideShowWindow.View.State = ppSlideShowRunning
0 голосов
/ 13 октября 2010

Я думаю, что Отаку прав - это просто ошибка в PPT. Я ничего не слышал об этом на форумах MSDN, поэтому я готов принять это. Спасибо всем, кто взглянул на вопрос.

...