2016-04-07 1 views
1

Я пишу макрос Excel для автоматического заполнения и сохранения нескольких документов Word. Он отлично работает на Office для Mac 2016, но я хочу обеспечить кросс-совместимость с Windows.Использование GrantAccessToMultipleFiles предотвращает запуск под Windows в Windows

Чтобы уменьшить нагрузку на пользователя для предоставления индивидуальных прав доступа к файлам из-за изолированной программной среды Mac Office, я применил GrantAccessToMultipleFiles command, используя ramitarora's helpful solution.

К сожалению, поскольку GrantAccessToMultipleFiles является специфичной для Mac командой, я запускаю ошибку компиляции: «Sub или Function not defined», как только я пытаюсь запустить это в Windows. Есть ли этому решение? Поскольку это ошибка компиляции, я не могу просто запустить ее с помощью «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 

Спасибо.

+0

Я не уверен в вашей конкретной проблеме, но у меня была аналогичная проблема, когда я пытался создать макрос сценария, который имел бы диалоговое окно с открытым файлом на обеих системах только с одной кодовой базой. Я решил это в конце концов. Основное различие, которое я вижу в вашей шахте, заключается в том, что я обнаружил, что мне пришлось отделить код от разных функций, а затем выбрать функцию выбора, чтобы решить, какой из них. Это не похоже на то, что ваш конкретный код OSX был выделен в его собственную функцию. Http://stackoverflow.com/questions/21035212/excel-vb-open-file-osx-and-windows – jskrwyk

+0

А, это решение ! Я напишу отдельный sub и назову его только на OSX. Ошибка компиляции в Windows, поскольку она не будет вызываться. Спасибо за предложение. – clwatkins

+0

Я добавил это как ответ, если он сработает, поэтому вы можете пометить его как правильно, чтобы помочь другим в будущем. – jskrwyk

ответ

0

Вы должны отделить свой OSX и код Windows от разных функций, а затем вызвать только соответствующую функцию. Таким образом, функция с конкретным кодом никогда не вызывается в неправильной системе, и проблема не возникает.

1

Вы также можете использовать условную компиляцию, чтобы отделить Mac против кода Windows:

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

В частности, код, чтобы проверить на Mac 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 Dev Center здесь https://dev.office.com/blogs/VBA-improvements-in-Office-2016

Я проверил это, чтобы запустить мой макрос как на OSX, так и на ОС Windows стеблей, и это работает.

 Смежные вопросы

  • Нет связанных вопросов^_^