在 Mac M1 上通过 VBA 与第三方应用程序通信时出现问题

Problem communicating with 3rd party apps via VBA on Mac M1

我已经为 Microsoft Word 创建了一个 VBA 加载项。 Windows 和 Mac 版本。该加载项与第 3 方应用程序通信。 这多年来一直运作良好。我现在正在努力使这项工作适用于基于 M1 的 mac 的 Mac 版本(也许也与 Big Sur 相关)。 通信部分通过 dylib 编写的 i c,通过 stdin 和 stdout 进行。 其次一些功能使用AppleScriptTask。
这两种方法我都不行。

AppleScriptTask 总是return错误:

Run-time error '5'
Invalid procedure call or argument

VBA-代码: s = AppleScriptTask("WMscript.scpt","Test","")

我尝试了 .scpt、.scptd 和 .applescript 脚本。
新创建的脚本文件也很简单 test.script:

on Test(paramS)
    tell application "Finder"
         activate
    end tell
end Test

api 在其他应用程序中工作,但在 VBA 中使用时我无法在其中打开第 3 方应用程序。

我将这些特殊文件夹用于所有第 3 方文件以规避两种方法的沙盒:
/Library/Application support/Microsoft/Office365/User Content/Add-ins/
~/Library/Application Scripts/com.microsoft.word/
~/Library/containers/com.microsoft.word/Data/

我还尝试了 GrantAccessToMultipleFiles(FileArray) 函数。它总是 returns 'True' 无论数组中发送了哪些文件名。它从不提示用户。

运行:
M1Mac
大苏尔 11.6 (M1)
Microsoft Word Mac 16.54 (21101001)

不确定以下内容是否对您有所帮助。

如果您的第三方应用程序来自未知开发者,则会进入 GateKeeper 隔离区。在调用您的 VBA 脚本之前尝试删除隔离,运行 在脚本之后。

set theApp to application id "Avidemux.org" -- EDIT here the bundle ID
set quotedPath to quoted form of (POSIX path of (path to theApp))
do shell script "xattr -rd com.apple.quarantine " & ¬
    quotedPath with administrator privileges

您可以将上述代码包含在 VBA 脚本的开头。

ApplceScriptTask 问题与脚本文件的路径不正确有关: 不正确:~/Library/Application Scripts/com.microsoft.word/ 正确:~/Library/Application Scripts/com.microsoft.Word/

必须是大写的 W。