VBA скопировать данные Excel в Word после обновления Office 2016 с 2010 года - PullRequest
1 голос
/ 08 октября 2019

Обновление до 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

Любое предложение будет оценено. Спасибо

1 Ответ

0 голосов
/ 14 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...