vba - 修改代码以将范围复制为图片
问题描述
我有一个代码,在将单个单元格的值复制到保存的 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
解决方案
在 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
推荐阅读
- javascript - React Native Firebase 拉取和推送数据问题
- microsoft-graph-api - 我可以使用 Microsoft Bot Framework 实现 Maker/Checker 机器人吗?
- google-chrome - Google Chrome 版本 91 导致带有 Struts 的旧版 JSP 丢失数据和格式
- r - 对矩阵列名进行排序以匹配列表中的元素顺序
- excel - 如何通过工作表名称在 Perl 中读取 Excel 文件
- javascript - 数据表不显示数据(Laravel 8.4.x)
- java - 如何在水平滚动条中查看 ArrayList?
- mule - 骡流终止
- c++ - 为什么我可以使用运行时加载的 dll 未导出的函数
- java - 带有泛型的 InjectMocks 引发 NullPointerException