首页 > 解决方案 > 修改代码以将范围复制为图片

问题描述

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

标签: vbams-word

解决方案


在 Word 中,与 Excel 类似,使用对象很重要。Word.Document因此,下面的代码为目标以及目标(书签)声明和实例化对象Word.Range

使用Document对象,可以直接将正在打开的文档设置为对象,从而无需依赖不确定ActiveDocument属性。如果需要,可以使用Range对象再次拾取该目标位置。

CopyPicture如果图表应该是 Word 文档中的静态图形(而不是 Chart 对象),则在复制图表时应在 Excel 中使用该方法。这会将图形放在 Windows 剪贴板上,以便可以将其粘贴到文档中。(顺便说一句,您无法Range.Text在 Word 中分配要复制的内容。)

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

推荐阅读