首页 > 解决方案 > MSWord 上的 VBA:SAPI.SpVoice 对象是否有发言结束的事件?

问题描述

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

Set speech = CreateObject("SAPI.SpVoice")

我用它来阅读选定的段落:

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

它工作得很好。现在,当“说”完后,我希望程序自动移动到下一段并阅读它。即再次运行上述两行代码。

当我在 C# 中做类似的事情时,我使用 SpeechSynthesizer.SpeakCompleted 事件来调用“移动到下一段并阅读它”函数。我正在寻找 VBA 中的等价物。

有任何想法吗?

标签: vbams-word

解决方案


找到了解决方案。显然,解决方案本身很简单,但由于我在 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

推荐阅读