首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Application.Speech.Speak要逐个读一些数字,而不是把它们放在一起?

为什么Application.Speech.Speak要逐个读一些数字,而不是把它们放在一起?
EN

Stack Overflow用户
提问于 2018-02-14 15:07:37
回答 3查看 713关注 0票数 4

假设现在是11小时11分钟。它读作“一小时”和“十一分钟”,如:

代码语言:javascript
运行
复制
Sub TEST1() 
  Application.Speech.Speak "It is " & Hour(Now()) & " hours and " & Minute(Now()) & " minutes"
End Sub

然而,下面的内容是“十一”小时和十一分钟

代码语言:javascript
运行
复制
Sub TEST2() 
  Application.Speech.Speak "It is 11 hours and 11 minutes"
End Sub

相反,它是“一小时”和“十一分钟”,如下所示:

代码语言:javascript
运行
复制
Sub TEST3() 
  Application.Speech.Speak "It is " & "11" & " hours and " & "11" & " minutes"
End Sub

我怎样才能把这些数字读成单词呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-14 15:39:32

您需要创建/修改字符串以生成所需的结果。

代码语言:javascript
运行
复制
Sub dural()
    Application.Speech.Speak "11"
    Application.Speech.Speak "eleven"
End Sub

会重复同样的事情。

代码语言:javascript
运行
复制
Sub dural()
    Application.Speech.Speak "1 1"
    Application.Speech.Speak "one one"
End Sub

也会这么做。一旦你决定了你想让计算机说什么,你就可以格式化/重新格式化字符串来产生这个结果。

EDIT#1:

在我的电脑上:

代码语言:javascript
运行
复制
Sub dmral()
    Dim s As String
    s = "It is " & "11" & " hours and " & "11" & " minutes"
    MsgBox s
    Application.Speech.Speak s
End Sub

也能像预期的那样工作。

看来需要先执行连接。

票数 5
EN

Stack Overflow用户

发布于 2018-02-14 16:02:54

基于的SpeakXML自变量方法

语法

.Speak(Text,SpeakAsync,SpeakXML,Purge)

如果将第三个参数SpeakXML设置为True,则可以在文本字符串中使用XML标记。

XML <spell>标记强制语音拼出所有文本,而不是使用默认的单词和句子中断规则。所有字符都应该扩展到相应的单词(包括标点符号、数字等)。注意,<spell>标记不能是空的,也不要忘记结束标记</spell>

尝试在11的两个变体中使用以下内容

代码语言:javascript
运行
复制
Sub TEST()
  Application.Speech.Speak "It is " & "<spell>11</spell>" & " hours and " & "11" & " minutes", False, SpeakXML:=True
End Sub

备注/警告

我使用的是中欧语言版本,而你的例子在我的例子中没有说出一个,所以可能还有另一个本地设置问题。

票数 2
EN

Stack Overflow用户

发布于 2018-02-14 16:22:42

葡萄牙语有一些有趣的发音挑战。除其他外,我们还有"-ão“这个词的结束,就像在圣保罗一样。-ão的发音与“母猪”中的-ow几乎相似,这意味着当你发音元音时,空气应该从你的鼻子中流出。有人说..。

Application.Speech.Speak "Já são" & Hour(Now()) & "horas e 11 minutos"

Application.Speech.Speak "11" ->读“十一”

Application.Speech.Speak "Já são" & "11" & "horas"

Application.Speech.Speak "Já sao" & Hour(Now()) -“现在是十一小时了”。请注意,在这种情况下,鼻腔-“o”被移除。所以,数字发音是以单词表示的。

Application.Speech.Speak "Já são^" & Hour(Now()) -“现在是十一小时了”。注意,鼻腔-“o”现在已经出现了,并且后面还有一个"^“标志。

我不知道Excel为什么会那样做。但是,问题解决了 :)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48790329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档