Неправильный диапазон Excel в Word копируется, если лист с диапазоном не активен - PullRequest
0 голосов
/ 05 февраля 2019

Я обнаружил странную причуду, когда копирую диапазон из Excel в Word в Office 2016 (не пробовал в других версиях) как объект OLEObject.VBA находится в Excel.Вот код, он находит закладку в файле Word, вставляет в таблицу и сбрасывает закладку:

Set wordRange = wordDoc.bookmarks("Table").Range
wsService.Range("A1:B15").Copy
wordRange.PasteSpecial Link:=False, DataType:=0, Placement:=0
wordDoc.bookmarks.Add "Table", wordRange

Это работает, если лист wsService активен в Excel.Если нет, то Range("A1:B15") на активный лист копируется вместо этого.Я пробовал другие типы данных (например, растровое изображение, метафайл, форма), и все они работают нормально.Это ошибка?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Ваше описание предполагает, что все, что вы делаете с wsService, указывает на ActiveSheet.Например:

set wsService = ActiveSheet

вместо того, чтобы сказать, какой конкретный лист он должен использовать:

set wsService = ThisWorkbook.Sheets("Sheet1")

Таким образом, лист не должен быть видимым, чтобы что-то скопировать с него.

0 голосов
/ 05 февраля 2019

Попробуйте это:

Dim wsService as Worksheet, rng as Range, other declarations...

Set wordRange = wordDoc.bookmarks("Table").Range
Set wsService = ThisWorkbook.Sheets("sheetname")
Set rng = wsService.Range("A1:B15")

rng.Copy
wordRange.PasteSpecial Link:=False, DataType:=0, Placement:=0
wordDoc.bookmarks.Add "Table", wordRange
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...