我正在 Mac OS BigSur 上运行 Word 16.63 (22070801)。
我正在尝试在 MacOS 上的 VBA 代码中调用 popen。
Private Declare PtrSafe Function popen Lib "libc.dylib" (ByVal command As String, ByVal mode As String) As Long
Sub AutoOpen()
a = popen("whoami", "r")
End Sub
当系统策略阻止 Microsoft Office 应用程序加载外部
32815
文件时,会出现运行时错误代码 .dylib
。
该策略称为 Visual Basic 外部库绑定,其键为
DisableVisualBasicExternalDylibs
。无法在应用程序的用户界面中启用/禁用此策略。
该策略是针对 macOS 上的所有 Office 应用程序全局设置的。不能仅在单个应用程序上设置。
要启用该策略,请运行以下命令:
defaults write com.microsoft.office DisableVisualBasicExternalDylibs -bool true
任何调用从
.dylib
加载的外部 C 函数的 VBA 代码现在都会抛出 32815
错误。
要禁用该策略,请将其删除:
defaults delete com.microsoft.office DisableVisualBasicExternalDylibs
该策略还可以通过 macOS MDM 配置文件或使用 JAMF 配置来设置。
这对我有用:
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function popen _
Lib "/usr/lib/libc.dylib" (ByVal command As String _
, ByVal mode As String) As LongPtr
#Else
Private Declare Function popen _
Lib "libc.dylib" (ByVal command As String _
, ByVal mode As String) As Long
#End If
Sub AutoOpen()
#If VBA7 Then
Dim a As LongPtr
#Else
Dim a As Long
#End If
a = popen("whoami", "r")
Debug.Print a
End Sub