修改代码以将范围复制为图片

时间:2019-04-15 10:49:03

标签: vba ms-word

我有一个代码,当将一个单元格的值复制到保存的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

1 个答案:

答案 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