我正在 Mac OS BigSur 上运行 Word 16.63 (22070801)。
我正在尝试在 VBA 脚本中调用 popen(在 MacOS 上):
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
但是会导致运行时错误:
我看起来一切都很好,有人知道出了什么问题吗?
这对我有用:
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
当系统策略阻止 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 配置来设置。