Search code examples
vbapowerpointspeech

Speech in PowerPoint (VBA)


I want to be able to make PowerPoint speak, say something.

I tried this code to make PP speak:

Private Sub CommandButton1_Click()
Application.Speech.Speak "Hello World"
End Sub

But the code doesn't work, it doesn't exists. What can I do, which is the right code?

It says:

Compile Error Method or Data member not found.

Sorry for any error on my question.


Solution

  • The reason it's not working is that there's no Application.Speech property/method in the PPT object model. Somewhere or other I've seen code that invokes Excel to do the lifting but here's an answer from John Wilson of PPT Alchemy that seems more direct:

    There is a page on our site about talking message boxes http://www.pptalchemy.co.uk/PowerPoint_speech.html

    It could be easily modified to speak the text in a shape in Slide Show mode.

    Sub speak(oshp As Shape)
      Dim strSpeak As String
      Dim SAPIObj As Object
      Set SAPIObj = CreateObject("SAPI.SPvoice")
      SAPIObj.Rate = -2
      If oshp.HasTextFrame Then
        If oshp.TextFrame.HasText Then
          strSpeak = oshp.TextFrame.TextRange.Text
        End If
      End If
    
      SAPIObj.speak "<pitch middle='-15'>" & strSpeak
    
    End Sub
    

    If you don't need to pick up the text from a particular shape, a modification along these lines should do it:

    Sub SayThisAloud(sText as String)
    
      Dim SAPIObj As Object
      Set SAPIObj = CreateObject("SAPI.SPvoice")
      SAPIObj.Rate = -2
    
      SAPIObj.speak "<pitch middle='-15'>" & sText
    
    End Sub