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

How to use Mac synthetic voice called from VBA code (through MacScript) to read non-Latin characters (Greek)

我在 Mac Excel 2011 年尝试调用 AppleScript (MacScript) 以从 VBA 中大声读出非拉丁字符时遇到问题(例如特定 Excel 单元格中的文本)。以下代码行可以很好地使用合成语音阅读法语文本 "Audrey":

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

FrenchStrg 例如"croissant"

但是,当尝试对使用合成语音的希腊语使用相同的代码时 "Nikos",如

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

GreekStrg 例如"ούζο"

大部分字符串(希腊字符)被解释为“_”,因此不会被大声朗读(命令 "say "ούζο" using "Nikos"" 在 AppleScript 编辑器中运行良好).在某些情况下,一些字母可能被解释为一些特殊字符并被相应地读出,但我找不到有用的模式。

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

如有任何帮助,我们将不胜感激!

我认为这行不通,但请务必尝试一下:

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

Unicode Support
AppleScript is now entirely Unicode-based. Comments and text constants in scripts may contain any Unicode characters, and all text processing is done in Unicode, so all characters are preserved correctly regardless of the user’s language preferences. For example, this script works correctly in AppleScript 2.0, where it would not have in previous versions:

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

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

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

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