vba - 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 中的等价物。
有任何想法吗?
解决方案
找到了解决方案。显然,解决方案本身很简单,但由于我在 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
推荐阅读
- pandoc - Pandoc 转换为 PDF 不提供彩色超文本链接
- python - Python If 语句问题
- javascript - 我的 while 循环接受它不应该接受的答案。为什么?
- c# - 为什么我的页眉和页脚图像比例仅在我的机器上增加了 1000%?
- javascript - 将对象数组转换为树数据结构
- html - 如何在轮播Bootstrap中通过高度居中图像
- java - 如何存储来自 JTextField 的值并将其与 Thread 一起使用?
- python - Python3多处理终止vs杀死vs关闭
- r - 返回保存时如何清理函数闭包(环境)?
- syntax-error - 试图建立一个升级系统