Есть и другие варианты этого вопроса в StackOverflow, но все они возникли несколько лет назад, и ответы от них, похоже, относятся к более старым версиям VBA ... или, по крайней мере, они дают мне ошибки, которые я не смогрешить иначе.Вот мой код, написанный с помощью редактора MS Visual Basic версии 7.1, работающий в Mac OS Mojave 10.14.5.Word и Excel являются версиями 16.26.Каждый саб ниже - это отдельная попытка.Я новичок в VBA, поэтому пробую много вещей, которые я не совсем понимаю.Каждая подпрограмма выдает различную ошибку:
Sub OpenExcelFile1()
Dim oExcel As Excel.Application
Dim oWB As Excel.Workbook
Dim granted as Boolean
Debug.Print "a"
Set oExcel = New Excel.Application
granted = GrantAccessToMultipleFiles(Array("/users/sarah/workspace/report-writer/"))
Debug.Print "b"
Set oWB = oExcel.Workbooks.Open("/Users/sarah/workspace/report-writer/test.xlsx", ReadOnly:=True)
Debug.Print "c"
End Sub
OpenExcelFile1 выше зависает примерно на минуту между "a" и "b", затем дает Run-time error '-2146959355 (80080005)': Automation error
Sub OpenExcelFile2()
Dim oWB As Excel.Workbook
Dim granted As Boolean
granted = GrantAccessToMultipleFiles(Array("/Users/sarah/workspace/report-writer/"))
Debug.Print "d"
Set oWB = Excel.Workbooks.Open("/Users/sarah/workspace/report-writer/test.xlsx", ReadOnly:=True)
Debug.Print "e"
End Sub
OpenExcelFile2 выше получает«d», затем дает Run-time error '430': Class does not support Automation or does not support expected interface.
Sub OpenExcelFile3()
Dim oWB As Excel.Workbook
Dim granted As Boolean
granted = GrantAccessToMultipleFiles(Array("/Users/sarah/workspace/report-writer/"))
Debug.Print "f"
Set oWB = Excel.Application.Workbooks.Open("/Users/sarah/workspace/report-writer/test.xlsx", ReadOnly:=True)
Debug.Print "g"
End Sub
OpenExcelFile3 получает «f», затем печатает ту же ошибку, что и OpenExcelFile2
Sub OpenExcelFile4()
Dim oWB As Excel.Workbook
Dim granted As Boolean
granted = GrantAccessToMultipleFiles(Array("/Users/sarah/workspace/report-writer/"))
Debug.Print "h"
Set oWB = Excel.Application.WorkbookOpen("/Users/sarah/workspace/report-writer/test.xlsx", ReadOnly:=True)
Debug.Print "i"
End Sub
OpenExcelFile4 получает «h», затем печатаетта же ошибка, что и в OpenExcelFile2 и OpenExcelFile3.
Ссылочный файл test.xlsx существует в указанном месте с разрешениями 777.
Я установил (проверил? использовал? ссылался?) следующие шесть ссылок: * Visual Basic для приложений * Библиотека объектов Microsoft Word 16.0 * Библиотека объектов Microsoft Forms 2.0 * Библиотека объектов Microsoft Office 16.0 * Библиотека объектов Microsoft Excel 16.0 * Microsoft Visual Basic для приложений Расширяемость 5.3
Чего мне не хватает?Спасибо.