VBA Excel图片到Word书签宏

时间:2016-06-07 16:12:10

标签: excel vba ms-word

我正在尝试修改VBA宏以启用Excel范围(作为图片,用于格式化目的)粘贴到Word书签。

Sub test2()
Dim objWord As Object
Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("PREMIUMS")
Set objWord = CreateObject("Word.Application")

objWord.Visible = True
objWord.Documents.Open "C:\TEST\BTM Macro Template.docx"

 With objWord.ActiveDocument
.Bookmarks("PLAN_1_SHEET").Range.Text = ws.Range("A34").Value
.Bookmarks("PLAN_2_SHEET").Range.Text = ws.Range("BTM_PREM").Value
End With
Set objWord = Nothing
End Sub

宏粘贴单个单元格文本引用(" A34"),但对范围使用相同的代码" BTM_PREM")会返回类型不匹配错误。 我知道这是因为范围不是一个字符串,但似乎无法确定如何修改此行以启用" BTM_PREM"作为图片,在" PLAN_2_SHEET"书签。

.Bookmarks("PLAN_2_SHEET").Range.Text = ws.Range("BTM_PREM").Value

2 个答案:

答案 0 :(得分:1)

您可以在Excel Copy()对象上使用Range方法,然后使用Paste()PasteSpecial()PasteExcelTable() Word Range对象方法,例如如下:

ws.Range("BTM_PREM").Copy
.Bookmarks("PLAN_2_SHEET").Range.Paste

ws.Range("BTM_PREM").Copy
.Bookmarks("PLAN_2_SHEET").Range.PasteSpecial Link:=True

ws.Range("BTM_PREM").Copy
.Bookmarks("PLAN_2_SHEET").Range.PasteExcelTable LinkedToExcel:=True, WordFormatting:=False, RTF:=True

答案 1 :(得分:1)

这是一段适合我的代码:

ActiveWorkbook.Sheets("Lease 1").Range("B16:AF25").CopyPicture Appearance:=xlScreen, Format:=xlPicture
wdoc.Bookmarks("Bkmrk1").Range.Paste
Application.CutCopyMode = False 

这不是一个完整的宏,只是它的一部分,所以你必须调整一下,但我想你明白了。