Проблема
Наш офис P C работает под управлением Office 365 ProPlus и постепенно обновляется до версии 1908 (сборка 11929.20562). По мере обновления P C многие наши макросы VBA не работают с различными объектными ошибками. Пока мы получаем ошибки в двух продуктах, Outlook и WRQ Reflections (эмулятор терминала).
Примеры
Sub master_dailyWhispirSMS_P2(myExcel As Excel.Application, myWorkbook As Excel.Workbook, worksheetName As String, testingMode As Boolean)
While Trim(myWorkbook.Worksheets(worksheetName).Cells(rowNum, 1).Value) <> ""
Приведенный выше код привел к выполнению ошибка времени '91' Переменная объекта или С переменной блока не установлено
Dim myExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Set myExcel = GetObject(, "Excel.Application")
myExcel.Workbooks.Open (folderPath & "\" & fileName)
Set myWorkbook = myExcel.Workbooks(fileName)
myWorkbook.Activate
Приведенный выше код привел к ошибке Ошибка компиляции: метод или элемент данных не найден. Ошибка компиляции была на MyWorkbook.Activate .
Находки
На данный момент общая тема заключается в том, что мы используем раннее связывание и используем объекты из библиотека объектов Microsoft Excel.
Я пытался перейти на использование позднего связывания, и это помогло мне справиться с одной проблемой, но существует слишком много подпрограмм, которые могут нуждаться в обновлении.
Изнутри редактора VBA в меню «Сервис» в разделе «Ссылки» библиотека объектов Microsoft Excel 16.0 отображается как выбранная. Я попытался удалить ссылку, а затем снова добавить ее, и это, похоже, решило проблемы. Это сработало и для моих коллег P C.
Идеи / решения
Этот код хорошо работал до обновления Office. Помимо того, что каждый отдельный пользователь выполняет удаление / добавление, я пытаюсь понять, что пошло не так, и, если есть какие-либо другие способы исправить это, пожалуйста.
Обратите внимание, я все еще очень "зеленый" с моим пониманием раннего и позднего связывания, но я думаю, что каким-то образом ссылки на библиотеки объектов либо повреждены, либо просто не указывают на правильный файл DLL после обновления. Это объясняет, почему различные методы не работают.