Documents.Open выдает ошибку «Заблокировано для редактирования», когда документ закрыт - PullRequest
0 голосов
/ 29 августа 2018

При использовании команды Documents.Open ("XX") в Excel. Мой Excel запрашивает окно, где он говорит, что документ заблокирован для редактирования, ME. Что не так.

Эта команда, кажется, работает, когда я использую Microsoft Word / Excel 2010 на работе. Но дома, используя офис 2016, это не так. Это относится и к моему персональному ноутбуку с офисом 2016 года.

Используется следующий код:

Sub test()

Dim wordDoc As Word.Application
Dim testDoc As Word.Application

Set wordDoc = CreateObject("Word.Application")
Set testDoc = wordDoc.Documents.Open("C:\Users\Me\Desktop\Test.docm")

' Do stuff

End Sub

Мои мысли:

Office 2016, похоже, открывает «теневой файл», который придает документу статус «Открыть». Но при перезагрузке компьютера код просто НЕ работает. При появлении ошибки «Имя файла» после перезапуска кода появляется ошибка «Заблокировано для редактирования».

Мой вопрос:

Использую ли я неправильный подход при открытии документа в Office 2016? Если так, то каков правильный подход? Если нет, нужно ли изменить настройки, чтобы это работало?

Заранее спасибо,

1 Ответ

0 голосов
/ 29 августа 2018

У меня было такое раньше, проблема для меня заключалась в том, что предыдущий запуск макроса не смог правильно закрыть файл. Дайте этой теме прочитать: Команда VBA Application.Quit не закрывает все приложение Excel

Вы можете проверить, так ли это, выполнив «Завершить задачу», запустив все экземпляры MS Word и снова запустив ваш макрос. Если он запускается в первый раз, тогда это ваша проблема.

Кроме того, это код, который я использовал для тестирования. Диммирование переменных как «Word.Application» у меня не сработало, поэтому, если мое предыдущее предложение не сработало, попробуйте вместо этого просто «Объект»:

Sub openWord()

    Dim wrd As Object
    Dim doc As Object

    Set wrd = CreateObject("Word.Application")
    wrd.Visible = True
    Set doc = wrd.Documents.Open("C:\Users\mitchellb\Desktop\doc.docx")

    doc.Close
    wrd.Quit
End Sub
...