gpt4 book ai didi

excel - 将带有 VBA 宏的 Excel 图表复制并粘贴到 Word 中

转载 作者:行者123 更新时间:2023-12-02 07:52:42 26 4
gpt4 key购买 nike

我知道我的问题可能听起来/微不足道,但我在任何地方都找不到解决方案......而且我已经筋疲力尽了。

我正在编写一个宏来自动在 Word 中生成报告。在某个阶段,我需要插入一些图表,该图表位于 Excel 的图表表中......但没办法。这是我的代码

Sub copy_pic_excel()
Dim xlsobj_2 As Object
Dim xlsfile_chart As Object
Dim chart As Object

Set xlsobj_2 = CreateObject("Excel.Application")
xlsobj_2.Application.Visible = False
Set xlsfile_chart = xlsobj_2.Application.Workbooks.Open("path_to_file.xlsx")

Set chart = xlsfile_chart.Charts("sigma_X_chart")
chart.Select
chart.Copy
With Selection
.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
End With
End Sub

但它一直显示错误消息:“运行时错误'5342':指定的数据类型不可用。”

我不知道为什么它没有粘贴图表。我想通过“MSForms.DataObject”使用剪贴板,但我似乎它只适用于文本(或字符串)。据我了解,我拥有所需的一切,但显然缺少一些东西。

有什么想法吗?

最佳答案

如果您使 Excel 应用程序可见xlsobj_2.Application.Visible = True,您可以看到到底发生了什么:当您执行此行chart.Copy时,它只是复制图表到新工作簿中。要修复此问题,请改用 chart.ChartArea.Copy:

Sub copy_pic_excel()
Dim xlsobj_2 As Object
Dim xlsfile_chart As Object
Dim chart As Object

Set xlsobj_2 = CreateObject("Excel.Application")
xlsobj_2.Application.Visible = False
Set xlsfile_chart = xlsobj_2.Application.Workbooks.Open("path_to_file.xlsx")

Set chart = xlsfile_chart.Charts("sigma_X_chart")
chart.Select
chart.ChartArea.Copy
With Selection
.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
End With

'clean up
Set xlsfile_chart = Nothing
xlsobj_2.Quit
Set xlsobj_2 = Nothing
End Sub

另请注意,我添加了清理部分代码以退出 Excel 应用程序并清理内存。

关于excel - 将带有 VBA 宏的 Excel 图表复制并粘贴到 Word 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com