一招让EXCEL开口说话
前言
EXCEL其实是可以说话的,只是我们没有给他机会,现在机会来了,快来跟我学一招。
正文
1、 首先我们打开EXCEL,在单元格中输入几段中英文对话,如下图所示:
2、 按ALT+F11打开VBA界面,如下图所示
3、 双击SHEET1,在右侧窗口下拉按钮中,选择WorkSheet
4、 代码自动默认SelectionChange动作命令,即当单元格的选择发生变动时,执行下面的命令
5、在中间写入代码:
Target.speak
如下图所示:
6、 回到SHEET1界面,用鼠标点击单元格,你将听到丽丽女士为你读取这个单元格的内容,如果你没有听到,请检查电脑是否有声卡,声音是否打开,如果没有外放,建议带上耳机试试。
你也可以选择多个单元格,但是你会发现一个问题,当你一旦选择某个单元格或某个区域时,你必须听他读完,否则你不能选择其他区域,也不能暂停。
如果我想随时终止,切换的其他单元格怎么办?
我们需要调用稍微复杂的函数,Application.Speech.Speak,语法如下:
解释:
Text:要朗读的文本,这个没啥可说的
SpeakAsync:如果为0,则必须读完,才能执行下一个命令,如果为1,则可以中断当前读取内容
SpeakXml:意义不大,如果为0,单元格的内容均会被读取,如果为1,则指读取网页中的正文,网页代码将不会被读取。
Purge:当SpeakAsync为1时有效,如果Purge为0,则不终止原来的语音,等上一条语言读完后,执行本条语音,如果Purge为1,则将终止原来的语音,马上读取当前的单元格。
注释掉刚才的代码,重新写入:
Application.Speech.Speak Target, 1, 0, 1
点击单元格,并在单元格之间随意切换,发现声音也会随时切换。
如果把代码改为Application.Speech.Speak Target, 1, 0, 0
你可以在单元格之间切换,但是读音必须等上一个单元格读完后,才能自动切换到下一个单元格。
但是这个语法不支持多个单元格同时选,同时选择时,会跳出错误提示:
为了避免错误提示,我们可以在代码开始时加入一条命令,将错误屏蔽掉
On Error Resume Next
意思是如果有错误,直接执行下一条命令。如下图所示:
上面说到为我们转换语言的是丽丽女士,那么能否切换到其他人员呢,答案是可以,不过系统只提供了两个人,一个丽丽,一个娜娜,但娜娜只会英语,碰到中文她就不吱声了,丽丽中英文都会,也没得选择。具体选择如下:控制面板,语言识别,文本到语言转化、语音选择,确定。
总结
简单总结一下:
SpeakAsync为0时,相当于独占话筒,必须我说完,才能安排下一个,中间不能插话,不能抢话筒。
SpeakAsync为1时,Purge为0时,仍然相当于独占话筒,但是大家可以举手排队,我说完你再说,一个个来。
SpeakAsync为1时,Purge为1时,相当于随时可以抢过话筒,随时打断别人发言。