VBA代码读取word文档

VBA代码读取word文档,vba,ms-word,Vba,Ms Word,有没有办法创建VBA代码来通过音频读取word文档?就好像电脑在读文件上的东西一样。(当然是所有文本) 我在谷歌上找到了这个搜索 该代码需要Microsoft语音对象库 Word的VBA宏: Dim speech as SpVoice Sub SpeakText() On Error Resume Next Set speech = New SpVoice If Len(Selection.Text) > 1 Then 'speak selection speech.Speak S

有没有办法创建VBA代码来通过音频读取word文档?就好像电脑在读文件上的东西一样。(当然是所有文本)

我在谷歌上找到了这个搜索

该代码需要Microsoft语音对象库

Word的VBA宏:

Dim speech as SpVoice

Sub SpeakText()

On Error Resume Next

Set speech = New SpVoice

If Len(Selection.Text) > 1 Then 'speak selection
speech.Speak Selection.Text



SVSFlagsAsync + SVSFPurgeBeforeSpeak



Else 'speak whole document
speech.Speak ActiveDocument.Range(0, ActiveDocument.Characters.Count).Text



SVSFlagsAsync + SVSFPurgeBeforeSpeak



End If

Do
DoEvents

Loop Until speech.WaitUntilDone(10)

Set speech = Nothing

End Sub

Sub StopSpeaking()

'Based on a macro by Mathew Heikkila

'used to interrupt any running speech to text

On Error Resume Next

speech.Speak vbNullString, SVSFPurgeBeforeSpeak

Set speech = Nothing

End Sub

如果您使用的是Windows 10-我有两个同名的库“Microsoft Speech Object Library”-请务必选择指向Windows/system32/Speech/Common/sapi.dll的库,这是第三方软件的用途。分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见“谢谢斯科特”-我还没有尝试过任何东西,因为我不知道使用VBA是否可行。谢谢谢谢,我会试试这个,然后回复。很抱歉回复太晚-它不起作用。我没有收到任何错误消息或任何音频。我会继续寻找并分享我的发现。你提供的链接解释了这一点,它很有效-谢谢GlobalJim@GeekzInside很高兴听到!:-)请记住将此答案标记为已接受,以便其他搜索解决方案的人知道!我如何将其标记为答案?我没有看到这样做的选择。
Dim speech as SpVoice

Sub SpeakText()

On Error Resume Next

Set speech = New SpVoice

If Len(Selection.Text) > 1 Then 'speak selection
speech.Speak Selection.Text



SVSFlagsAsync + SVSFPurgeBeforeSpeak



Else 'speak whole document
speech.Speak ActiveDocument.Range(0, ActiveDocument.Characters.Count).Text



SVSFlagsAsync + SVSFPurgeBeforeSpeak



End If

Do
DoEvents

Loop Until speech.WaitUntilDone(10)

Set speech = Nothing

End Sub

Sub StopSpeaking()

'Based on a macro by Mathew Heikkila

'used to interrupt any running speech to text

On Error Resume Next

speech.Speak vbNullString, SVSFPurgeBeforeSpeak

Set speech = Nothing

End Sub