【问题标题】:Copying Chart Objects failed - VBA glitch?复制图表对象失败 - VBA 故障?
【发布时间】:2022-07-28 05:31:42
【问题描述】:

我运行一个程序,该程序执行一系列宏来将原始数据处理成各种图表和图形。主宏依次运行大约 15 个宏。一切都在大约 50% 的时间内有效。复制我的所有图表并将它们放入一张纸的代码是瓶颈。它一半时间有效,另一半我收到以下错误:

“复制对象图表对象的方法失败。”

见下面的代码。接受任何和所有建议,我很难过!

Sub CopyCharts()

     Dim Sheet_Count As Integer
     Dim Target_Sheet As Worksheet
     Dim i As Integer
     Dim Cht As ChartObject
     
     Sheet_Count = ActiveWorkbook.Sheets.Count
     Set Target_Sheet = ActiveWorkbook.Sheets(4)
     
     For i = 5 To 16
        For Each Cht In ActiveWorkbook.Sheets(i).ChartObjects
            Cht.Copy
            Target_Sheet.Paste Target_Sheet.Range("D4")
        Next Cht
     Next i

End Sub

【问题讨论】:

  • 你试过.Worksheets而不是.Sheets吗? Sheets 集合包含工作表和图表对象,因此您可能会将它们与您的代码混淆。
  • 尝试在粘贴前激活工作表,这有帮助吗?只是猜测。
  • 试试Cht.Chart.Copy
  • 大家好,感谢 cmets。可悲的是,这些都没有解决它。有人知道复制工作簿中的所有图表并将其粘贴到特定工作表中的不同方法吗?

标签: excel vba excel-charts


【解决方案1】:

我今天也遇到了同样的问题,在阅读了您的问题后,我记得我以前也遇到过。我记得诀窍是在每次复制操作之前清除剪贴板。为此,请使用以下代码行:

Application.CutCopyMode = False

像这样把它放在你的副本之前:

 Sub CopyCharts()

 Dim Sheet_Count As Integer
 Dim Target_Sheet As Worksheet
 Dim i As Integer
 Dim Cht As ChartObject
 
 Sheet_Count = ActiveWorkbook.Sheets.Count
 Set Target_Sheet = ActiveWorkbook.Sheets(4)
 
 For i = 5 To 16
    For Each Cht In ActiveWorkbook.Sheets(i).ChartObjects
        Application.CutCopyMode = False 'Clear clipboard before copy operation.
        Cht.Copy
        Target_Sheet.Paste Target_Sheet.Range("D4")
    Next Cht
 Next i

End Sub

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2023-03-08
    • 2018-10-23
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多