BLOGS BY TOPIC
BLOGS BY AUTHOR
BLOGS BY YEAR
Deep within its bowels Excel contains a feature allowing it to read out the contents of cells (you can also get your VBA macros to talk to users). This blog goes to those deep places hidden within Excel!
Posted by Andy Brown on 12 August 2013
You need a minimum screen resolution of about 700 pixels width to see our blogs. This is because they contain diagrams and tables which would not be viewable easily on a mobile phone or small laptop. Please use a larger tablet, notebook or desktop computer, or change your screen resolution settings.
Getting Excel VBA to speak to you
The previous part of this blog showed how you can get Excel to read things out to you, but you can also perform the same trick in VBA.
Here's a basic subroutine to speak to you:
Application.Speech.Speak ("Wise Owl")
The Speak method has 3 arguments, but only the first one is of any interest, as this Microsoft page demonstrates.
Reading out the first n primes
If you want to get Excel to do this, you could run this macro!
Dim ThisNumber As Integer
Dim i As Integer
Dim IfPrime As Boolean
'hideously inefficient algorithm!
For ThisNumber = 2 To 100
IfPrime = True
For i = 2 To Int(Math.Sqr(ThisNumber))
If ThisNumber Mod i = 0 Then
IfPrime = False
If IfPrime Then Application.Speech.Speak CStr(ThisNumber)
Reading out cell contents
Probably the best use of Excel speech is to read out the contents of cells. This nifty macro would read out the contents of all of the values in column A, colouring each in as it went:
Dim DataRange As Range
Dim DataCell As Range
'get reference to range of data
Set DataRange = Range( _
ActiveCell.Offset(1, 0), _
'loop over cells, reading each
'and then colouring in
For Each DataCell In DataRange
DataCell.Interior.Color = RGB(250, 220, 240)
Application.Speech.Speak ( _
Replace(DataCell.Address, "$", "") & _
" = " & _
Here's the macro in action (the data is actually my scores at an app called Scramble, if you must know):
The macro has read out so far:
As you can see from the above three examples, the world of speech is now your oyster!
Is there any possibility in Excel to make it speak in other languages (Dutch for exeaple) using VBA ("application.speech"). I don't seem to be able to select a Dutch voice with "speech.Getvoices.item(x)", although I have a Dutch voice in Windows 10.
I honestly don't know! Anyone else ever seen this?
I found the answer myself. This site is great. And it works. I have a Dutch voice now in Excel. Should work for all other languages you can download from Microsoft.
That's so cool! Although slightly scary too, as it involves editing the registry. I haven't tried it - I think I'll stick with Microsoft English ...
I just read this article about "Getting Excel vba speak to you". My question is if you could help me setting up my excel sheet to speak a few selected cells when I press the "calculate" button. Is this possible to do with excel? I have about 8 cells that gives me some calculation results that I would like to be read when I press the calculate button.
I've written a separate blog explaining how to do this.