现在假设它是11h11分钟。它读取" ONE ONE"小时和"十一"分钟,如:
Sub TEST1()
Application.Speech.Speak "It is " & Hour(Now()) & " hours and " & Minute(Now()) & " minutes"
End Sub
但是,以下内容为" 11"小时和"十一"分钟
Sub TEST2()
Application.Speech.Speak "It is 11 hours and 11 minutes"
End Sub
相反,它会读到" ONE ONE"小时和"十一"分钟,如:
Sub TEST3()
Application.Speech.Speak "It is " & "11" & " hours and " & "11" & " minutes"
End Sub
如何才能将这些数字作为单词阅读?
答案 0 :(得分:5)
您需要创建/修改字符串以产生您想要的结果。
Sub dural()
Application.Speech.Speak "11"
Application.Speech.Speak "eleven"
End Sub
会重复同样的事情。
Sub dural()
Application.Speech.Speak "1 1"
Application.Speech.Speak "one one"
End Sub
也会这样做。一旦确定了计算机要求的内容,就可以格式化/重新格式化字符串以产生结果。
修改#1:强>
在我的电脑上:
Sub dmral()
Dim s As String
s = "It is " & "11" & " hours and " & "11" & " minutes"
MsgBox s
Application.Speech.Speak s
End Sub
也按预期工作。
看起来需要首先执行连接。
答案 1 :(得分:2)
通过SpeakXML参数进行接近
<强>语法强>
.Speak
(文字,SpeakAsync, SpeakXML ,清除)
如果将第3个参数SpeakXML
设置为 True ,则可以在文本字符串中使用XML标记。
XML <spell>
标记强制语音拼出所有文字,而不是使用默认的单词和句子破坏规则。所有字符都应扩展为相应的单词(包括标点符号,数字等)。
请注意,<spell>
代码不得为空,并且不要忘记结束标记</spell>
。
尝试将以下两种变体用于11
:
<强>代码强>
Sub TEST()
Application.Speech.Speak "It is " & "<spell>11</spell>" & " hours and " & "11" & " minutes", False, SpeakXML:=True
End Sub
注意/警告强>
我使用的是中欧语言版本,你的例子在我的案例中没有说出一个,所以也许还有另一个本地设置问题。
答案 2 :(得分:1)
葡萄牙语有一些有趣的发音挑战。除了其他之外,我们还有像圣保罗那样的词语“-ão”终止。 -ão的发音几乎与“母猪”中的-ow一样,这意味着当你发出元音时,空气应该部分来自你的鼻子。那就是说......
Application.Speech.Speak "Já são" & Hour(Now()) & "horas e 11 minutos"
- &gt;读到“这是一个小时,十分钟”
Application.Speech.Speak "11"
- &gt;读为“ELEVEN”
Application.Speech.Speak "Já são" & "11" & "horas"
- &gt;读“这是一个小时”
Application.Speech.Speak "Já sao" & Hour(Now())
- &gt;读到“这是十一小时”。请注意,在这种情况下,鼻子 - “ão”被删除了。所以,数字发音是单词
Application.Speech.Speak "Já são^" & Hour(Now())
- &gt;读到“这是十一小时”。请注意,鼻子 - “ão”现在存在,并且之后还有一个“^”符号
我不知道为什么Excel会像那样。但是,问题解决了 :)