使用GrantAccessToMultipleFiles可以防止在Windows上运行Sub

我正在写一个Excelmacros来自动填充和保存一些Word文档。 它在Office 2016 for Mac上运行良好,但我希望确保与Windows的交叉兼容性。

为了减轻由于Mac Office沙箱而给予个人文件权限的用户负担,我使用ramitarora的有用解决scheme实现了GrantAccessToMultipleFiles命令 。

不幸的是,因为GrantAccessToMultipleFiles是一个特定于Mac的命令,所以当我试图在Windows上运行这个命令时,我遇到了编译错误:“Sub or Function not defined”。 有针对这个的解决方法吗? 因为这是一个编译错误,我不能用“On Error Resume Next”来运行它。

作为参考,相关代码如下:

'Operating System check: if pos=0, user is on OSX Dim pos As Integer pos = InStr(Application.OperatingSystem, "Windows") 'If on OSX ask for file permissions in bulk If pos = 0 Then Dim fileAccessGranted As Boolean Dim filePermissionCandidates Dim filePathsArray As String filePathsArray = filePaths(0) For i = 0 To studentNum filePathsArray = filePathsArray & ", " & filePaths(i + 1) Next i 'Create an array with file paths for which permissions are needed filePermissionCandidates = Array(filePathsArray) 'Request access from user fileAccessGranted = GrantAccessToMultipleFiles(filePermissionCandidates) End If 

谢谢。

你必须将你的OSX和Windows代码分离成不同的function,然后才能调用相关的function。 这样,具有特定代码的function就不会在错误的系统上调用,并且没有问题。

您也可以使用条件编译来分离Mac和Windows代码:

 #If Mac then 'your Mac code #Else 'Windows code #End If 

具体来说,testingMac 2016的代码应该如下所示:

 #If MAC_OFFICE_VERSION >= 15 Then ' Do thing for Office for Mac 2016 (now at version 15.26) #Else 'Do thing for Windows #End If 

这是从这里的Office开发中心文档https://dev.office.com/blogs/VBA-improvements-in-Office-2016

我已经testing了这个在OSX和Windows操作系统上运行我的macros,它的工作原理。