VBA на MSWord: для объекта SAPI.SpVoice есть событие для завершения разговора? - PullRequest
1 голос
/ 14 мая 2019

Я использую VBA в Microsoft Word.Я создал объект SAPI.SpVoice:

Set speech = CreateObject("SAPI.SpVoice")

И я использую его для чтения выбранного абзаца:

Selection.Next(wdParagraph).Select
speech.Speak Selection.Text, 3

Он прекрасно работает.Теперь, когда «говорение» закончено, я хочу, чтобы программа автоматически перешла к следующему абзацу и прочитала его.то есть, чтобы снова запустить две вышеупомянутые строки кода.

Когда я делал нечто подобное в C #, я использовал событие SpeechSynthesizer.SpeakCompleted, чтобы вызвать функцию «Перейти к следующему абзацу и прочесть его».Я ищу эквивалент в VBA.

Есть идеи?

1 Ответ

1 голос
/ 14 мая 2019

Нашел решение. По-видимому, само решение простое, но оно не сработало, поскольку у меня была неправильная ссылка на VBA.

В VBA> Инструменты> Ссылка было два появления «Библиотеки объектов речи Microsoft».

Один ссылался на C: \ Windows \ System32 \ Speech_OneCore \ common \ sapi_onecore.dll Другой ссылался на C: \ Windows \ System32 \ Speech \ Common \ sapi.dll

Второй правильный.

После исправления я просто использовал простое интегрированное событие:

Private Sub speech_EndStream(ByVal StreamNumber As Long, ByVal StreamPosition As Variant)
    'Do stuff
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...