当我试图调用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