如何使用从VBA代码调用的Mac合成语音(通过MacScript)读取非拉丁字符(希腊语)



当我试图调用AppleScript(MacScript)从Mac Excel 2011上的VBA中大声读出非拉丁字符(例如特定Excel单元格中的文本)时,遇到了一个问题。以下代码行可以使用合成语音"Audrey"读取法语文本:

MacScript ("say """ & FrenchStrg & """ using ""Audrey""")

FrenchStrg,例如"羊角面包">

然而,当试图使用与中的合成语音"Nikos"相同的希腊语代码时

MacScript ("say """ & GreekStrg & """ using ""Nikos""")

GreekStrg,例如"¦Βζ¦Β">

大部分字符串(希腊字符)被解释为"_",因此不会被大声读取(在AppleScript编辑器中,使用"Nikos"的命令"say"ξ。在某些情况下,一些字母可能会被解释为一些特殊的字符,并相应地被读出,但我找不到有用的模式。

将Mac OsX的标准语言从英语更改为希腊语时,可以在VBA编辑器和MsgBox中正确识别字符。但是,MacScript的输出仍然不起作用。VBA MacScript函数是否只接受非unicode文本?有什么解决办法吗?

任何帮助都将不胜感激!

感谢@Zero建议使用剪贴板。这确实解决了问题。这是最后的工作代码:

Cells(1, 1).Copy
MacScript ("say (the clipboard) using ""Nikos""")

这就避免了字符串被转换成非unicode文本的问题。

我认为这不会奏效,但为了确保您无论如何都应该尝试:

MacScript ("say """ & (GreekStrg as Unicode text) & """ using ""Nikos""")

Unicode支持
AppleScript现在完全基于Unicode。脚本中的注释和文本常量可以包含任何Unicode字符,并且所有文本处理都是用Unicode完成的,所以无论用户的语言如何,字符都会正确保留偏好。例如,此脚本在AppleScript中正常工作2.0,在以前的版本中没有:

set the Japanese_phrase to "日本語"
set the Russian_phrase to "Русский"
set the new_phrase to the Japanese_phrase & " and " & the Russian_phrase
return new_phrase

最新更新