Обновление до Office 2016 вызвало ошибку. Мы копируем данные из ячеек Excel в новый текстовый документ, основанный на шаблонном документе .docx. Позиционирование в документе Word находится с закладкой. Следующий код VBA работал некоторое время, но после обновления до MS Office 2016 с 2010 года мы получаем ошибки:
ошибка времени выполнения 4605 этот метод или свойство недоступны, так как буфер обменапусто или недействительно
А затем я получаю
4605 Этот метод или свойство недоступны, так как эта команда недоступна для чтения
Я попробовал «wdDoc.Bookmarks ...» и получил
6124 Вам не разрешено редактировать этот выбор, потому что он защищен
Я проверилвся защита, настройки центра доверия и т. д. и все выглядит правильно. «editProject» - это метка из одной ячейки.
Dim wdApp As Object
Dim wdDoc As Object
Set wdApp = CreateObject("Word.application")
Set wdDoc = wdApp.Documents.Open(Filename:=WdocT, ReadOnly:=True)
' Project NAME
wdDoc.Bookmarks("BOOKMARK1").Range.Select ' wdDoc.Bookmarks("CLIENT").Range.Select
xlData = Sheets("Data Input").Range("editProject") ' get the data
`'THIS IS THE PROBLEM LINE`
wdApp.Selection.TypeText Text:=xlData ' place in doc '8/10/19 FALLING OVER HERE
Я знаю, что документ открывается, и находится отметка о книге, как я, и вставил следующее, чтобы проверить это:
'temp TRY THIS
Dim tempRange As Word.Range
Dim tempStart As Long
Dim tempEnd As Long
' Set tempRange = wdDoc.Bookmarks("BOOKMARK1").Range
Set tempRange = wdDoc.Bookmarks("BOOKMARK2").Range ' THIS WORKS
tempStart = tempRange.Start
tempEnd = tempRange.End
Я также попытался очистить буфер обмена с помощью следующего:
' 8/10/19 Bruce the following may help with clipboard error message 4605
wdDoc.UndoClear
Dim oData As New DataObject ' object to use the clipboard
oData.SetText Text:=Empty ' clear
oData.PutInClipboard ' take in the clipboard to empty it
'Application.Wait (Now + TimeValue("00:00:10")) ' this is required to stop clipboard overflow error
Application.CutCopyMode = False ' 8/10/19 Bruce - this should clear the clipboard
DoEvents ' test fixing error 4605
' DoEvents passes control to the operating system. Control is returned after the operating system has finished processing the events in its queue
Я также попытался выполнить следующее в соответствующем месте, но это не имеет значения:
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
wdApp.Visible = True
iтакже пробовал следующую строку вместо копии, но выдает ту же ошибку:
wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
Любое предложение будет оценено. Спасибо