簡體   English   中英

復制並粘貼帶有VBA宏的Excel圖表

[英]Copy and paste an excel chart with a VBA macro in word

我知道我的問題聽起來很簡單,但我找不到任何解決方案...我已經筋疲力盡了。

我正在編寫一個宏來自動在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應用程序並清理內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM