MSWord上的VBA:是否有SAPI.SpVoice对象的发言结束事件?

时间:2019-05-13 22:10:04

标签: vba ms-word

我在Microsoft Word上使用VBA。 我已经创建了SAPI.SpVoice对象:

Set speech = CreateObject("SAPI.SpVoice")

我正在用它来阅读所选段落:

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

效果很好。现在,当“说话”结束时,我希望程序自动移至下一段并阅读。即再次运行上述两行代码。

当我在C#中执行类似的操作时,我使用了SpeechSynthesizer.SpeakCompleted事件来调用“移至下一段并阅读”功能。我正在寻找VBA中的等效项。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

找到了解决方案。显然,该解决方案本身很简单,但由于我在VBA中的引用错误,因此无法正常工作。

在VBA>工具>参考中,“ Microsoft Speech Object Library”有两种外观。

有人引用了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