无法在office vba脚本中运行popen命令,运行时错误'32815'

问题描述 投票:0回答:2

我正在 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

但是会导致运行时错误:

enter image description here

我看起来一切都很好,有人知道出了什么问题吗?

vba macos ms-word ms-office
2个回答
0
投票

这对我有用:

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

0
投票

当系统策略阻止 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

文档

详细了解Office for Mac 中的宏安全首选项

该策略还可以通过 macOS MDM 配置文件或使用 JAMF 配置来设置。

© www.soinside.com 2019 - 2024. All rights reserved.