我有一个代码,当将一个单元格的值复制到保存的Word文档中的书签中时,它可以完美地工作。我希望修改此代码,以便可以复制一定范围的单元格并将其作为图片粘贴到Word文档中的书签中。
Dim objWord As Object
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet3")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open "C:\Users\Christopher.Ellis\Desktop\VBA Testing\CPA Test\Master\CE1.docx" ' change as required
With objWord.ActiveDocument
.Range.Text = ws.Range("B2:G23").CopyPicture
.Range.Bookmarks.Item("ContactWOP1").Range.Paste Type:=wdChartPicture
End With
Set objWord = Nothing
End Sub
答案 0 :(得分:0)
使用Word,类似于Excel,使用对象非常重要。因此,以下代码为目标Word.Document
以及目标(书签)Word.Range
声明并实例化了object。
使用Document
对象,可以将打开的文档直接设置为该对象,从而不必依赖不确定的ActiveDocument
属性。使用Range
对象,可以根据需要再次拾取该目标位置。
如果在Word文档(而不是Chart对象)中应该是静态图形,则在复制图表时应在Excel中使用CopyPicture
方法。这会将图形放在Windows剪贴板上,以便可以将其粘贴到文档中。 (无法将要复制的内容分配给Word BTW中的Range.Text
。)
Dim objWord As Object
Dim ws As Worksheet
Dim doc as Object, rng as Object
Set ws = ThisWorkbook.Sheets("Sheet3")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set doc = objWord.Documents.Open "C:\Users\Christopher.Ellis\Desktop\VBA Testing\CPA Test\Master\CE1.docx" ' change as required
With doc
ws.Range("B2:G23").CopyPicture
'.Range.Text = ws.Range("B2:G23").CopyPicture
Set rng = .Range.Bookmarks.Item("ContactWOP1").Range
rng.PasteAndFormat Type:=wdChartPicture
End With
Set objWord = Nothing
End Sub