如果包含范围的工作表未激活,则Excel to Word错误的范围被复制

时间:2019-02-05 11:36:34

标签: excel vba ms-word

在Office 2016中将范围从Excel复制到Word(在其他版本中未尝试)时,我发现一个奇怪的怪癖作为OLEObject。 VBA在Excel中。这是代码,它在Word文件中找到一个书签,粘贴到表中并重置书签:

docker-compose up --force-recreate

如果工作表Set wordRange = wordDoc.bookmarks("Table").Range wsService.Range("A1:B15").Copy wordRange.PasteSpecial Link:=False, DataType:=0, Placement:=0 wordDoc.bookmarks.Add "Table", wordRange 在Excel中处于活动状态,则此方法有效。如果不是,则复制活动工作表上的wsService。我尝试了其他数据类型(例如位图,图元文件,形状),它们都可以正常工作。这是错误吗?

2 个答案:

答案 0 :(得分:0)

您的描述表明您对wsService所做的所有操作都将其指向ActiveSheet。例如:

set wsService = ActiveSheet

而不是说应该使用哪个特定的工作表:

set wsService = ThisWorkbook.Sheets("Sheet1")

通过这种方式,不需要从工作表中复制任何内容。

答案 1 :(得分:-1)

尝试一下:

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