Word for Ma c - ошибка при вызове Excel.Application.Workbooks.Открытая ошибка времени выполнения -2146959355 (80080005) - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь открыть файл Excel в Word, чтобы прочитать значения некоторых ячеек и сделать магию c для нового файла в слове.

То, что я делал много раз, используя Microsoft Windows. Теперь, когда я не могу использовать Windows и мне приходится использовать свой личный компьютер, у меня возникают некоторые проблемы с использованием файлов, которые я написал на моей Ma c.

Я использую ту же версию на обеих ОС: Office Word 2016, но я получаю сообщение об ошибке при запуске макроса в моей ма c.

Я получаю

Runtime-Error с кодом -2146959355 (80080005).

Код огромен, но я попытался разобраться, чтобы найти ошибку. Само собой разумеется, что я достиг точки, что удаление большего равнозначно удалению макроса. Итак, это код, который дает мне ошибку. И я не могу понять причину.

Sub AutoOpen()

    Dim objExcel As New Excel.Application
    Dim exWb As Excel.Workbook
    Dim excelFile As String
    excelFile = ActiveDocument.Path & Application.PathSeparator & "file.xlsx"

    If (Dir(excelFile) <> "") Then
        Set exWb = objExcel.Workbooks.Open(excelFile)
        exWb.Close
    Else
        MsgBox ("File not found")
    End If
End Sub

Ошибка относится к Set из exWb

Этот же код работает в Windows

1 Ответ

0 голосов
/ 21 января 2020

Проблема в том, что в Ma c создание новых COM-объектов через New или CreateObject в настоящее время не работает. Или, по крайней мере, он не работает для некоторых пользователей с более sh установками ОС Ma c и Office.

Если вы сможете еще немного закрепить свой код, я думаю, вы увидите, что эта ошибка возникает в первой исполняемой строке после «Dim objExcel As New Excel.Application».

Эта проблема сообщалась в Microsoft несколько раз в течение нескольких лет, но очевидного ответа не было. Я предполагаю, что либо их разработчик. Команда внесла исторические c изменения в свою конфигурацию ОС Ma c, о которых они забыли, это означает, что они не сталкиваются с этой проблемой, или что люди, которые имели опыт работы с COM на Ma c, ушли и Microsoft останавливается, пока они не смогут восстановить некоторые соответствующие знания.

Кажется, на самом деле нет очевидной документации Microsoft по этому поводу.


Обновление.

В версии 16.34 из Ma c Word, вещи кажутся чтобы немного измениться.

GetObject по-прежнему бесполезен.

Но если вы сделаете

Dim app as Object
Set app = CreateObject("Excel.Application")

приложение больше не будет ничего. К сожалению, если вы выполните

typename (приложение)

, вы получите «WorkBook», что означает, что код по-прежнему не возвращает правильный тип объекта.

Но здесь, Теперь я могу, по крайней мере, сделать что-то вроде

If UCase(Typename(app)) = "WORKBOOK" Then
  Set app = App.Application
End If
...