Использование GrantAccessToMultipleFiles предотвращает запуск под Windows в Windows

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

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

К сожалению, поскольку 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 

Благодарю.

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

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

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

В частности, код для проверки на 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, и он работает.

  • Отправить данные в HTTP Post из VBA Excel для Mac
  • Есть ли способ заставить ADODB работать с Excel для Mac 2011?
  • Как преобразовать диапазон в строку (VBA)?
  • Хранение пароля в приложениях Excel Mac 2016 ODBC с использованием встроенного Microsoft Query
  • Applescript не работает при использовании macscript () в офисе, но это происходит, когда я вставляю его в редактор сценариев?
  • Объединение CSV в один WORKSHEET Excel для Mac
  • Выделите строку в excel mac 2011, когда ячейка имеет определенное слово
  • Команда Node через пользовательскую функцию Shell завершает работу с 32512
  • Браузер / сборщик папок ломается при портировании на Mac
  • AppleScript, Microsoft Excel и поддержка Hyperlink
  • Как выполнить сценарий Excel или Numbers на Mac и запустить с bash?
  • Interesting Posts

    Суммируйте значение в одной колонке на основе значения в другом столбце – excel 2013

    Как анализировать данные формата ячейки из файла .xlsx с помощью xlrd

    Правила условного форматирования Excel пролетают бесконечно

    Excel vba увеличивает значение ячейки без создания круговой ссылки

    Добавить расчетные элементы

    VBA, Loop через каталог crashing excel

    Где я могу найти хороший PHP-класс для экспорта данных из html или набора данных в Excel-файл с форматированием?

    Вызов сценария powershell из VBA работает на одном ПК, но не в другом

    Как сбросить результат функции FIND перед переходом на другой лист?

    Оптимизация производительности двойного цикла в VBA Excel

    (VBA) Открывает сразу несколько гиперссылок, если ссылка не равна «(пробел)»

    vlookup или index соответствуют именам списка один под другим в качестве массива

    Ошибка выполнения 91 vba

    Импорт нескольких страниц из Интернета в Excel

    Excel Pivot Table Count Уникальные значения

    Давайте будем гением компьютера.