>>564
グローバル変数とかにすればLoop待ちせず完全に非同期に出来るみたいね
…ついでにクラスモジュール化してみた

--- 標準モジュール(テスト用)
Private clsSpv As New SpeechAPI
Sub test()
  Call clsSpv.Speak("Hello World")
  Call clsSpv.Speak("Speech API Test")
End Sub

--- クラスモジュール(SpeechAPI.cls)
Private Const SVSFlagsAsync = 1  '非同期
Private objSpV As Object
Private Sub Class_Initialize()
  Set objSpV = CreateObject("SAPI.SpVoice")
End Sub
Private Sub Class_Terminate()
  Call Me.WaitSpeak 'Speak終了前に破棄されそうな場合は待機
  Set objSpV = Nothing
End Sub
Sub Speak(SpeakText)
  Call objSpV.Speak(SpeakText, SVSFlagsAsync)
End Sub
Sub WaitSpeak()
  Do
    DoEvents
  Loop Until objSpV.WaitUntilDone(10)
End Sub