Raf*_*ael 4 excel charts vba ms-word copy-paste
我想创建一个宏,从 Excel 复制图表并将它们作为图片粘贴到 Word 中(最好是增强型元文件)。
我设置了一个带有表格的 Word 模板文档,该表格在应插入图片的特定单元格中包含书签。
然而,使用我当前的代码,插入的图像太大了,弄乱了整个表格。我尝试了不同的图片选项(增强型图元文件、png 等),但它们的结果都相同。
当我尝试在表格中手动复制图表时PasteSpecial,它会保持原始大小,这正是我想要的。
我必须在我的代码中更改什么才能获得它?
Sub CopyCharts2Word()
Dim wd As Object
Dim ObjDoc As Object
Dim FilePath As String
Dim FileName As String
FilePath = "C:\Users\Name\Desktop"
FileName = "Template.docx"
'check if template document is open in Word, otherwise open it
On Error Resume Next
Set wd = GetObject (, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
Set ObjDoc = wd.Documents.Open(FilePath & "\" & FileName)
Else
On Error GoTo notOpen
Set ObjDoc = wd.Documents(FileName)
GoTo OpenAlready
notOpen:
Set ObjDoc = wd.Documents.Open(FilePath & "\" & FileName)
End If
OpenAlready:
On Error GoTo 0
'find Bookmark in template doc
wd.Visible = True
ObjDoc.Bookmarks("Boomark1").Select
'copy chart from Excel
Sheets("Sheet1").ChartObjects("ChartA").chart.ChartArea.Copy
'insert chart to Bookmark in template doc
wd.Selection.PasteSpecial Link:=False, _
DataType:=wdPasteMetafilePicture, _
Placement:=wdInLine, _
DisplayAsIcon:=False
End Sub
Run Code Online (Sandbox Code Playgroud)
是的,就是这样:
我换了
'insert chart to Bookmark in template doc
wd.Selection.PasteSpecial Link:=False, _
DataType:=wdPasteMetafilePicture, _
Placement:=wdInLine, _
DisplayAsIcon:=False
Run Code Online (Sandbox Code Playgroud)
和
wd.Selection.PasteSpecial Link:=False, _
DataType:=wdPasteMetafilePicture, _
Placement:=wdTight, _
DisplayAsIcon:=False
Run Code Online (Sandbox Code Playgroud)
这样,图表的大小与 Excel 工作表中的大小保持一致!