使用vba删除excel中的图表

使用vba删除excel中的图表

如何使用 VBA 删除 Excel 工作簿中的所有图表。

ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.Parent.Delete

答案1

这应该能满足您的需求。它还会通过 MsgBox 提示用户,以防止删除所需的图表/对象。

子delAllChartsInWorkbook()
' delchart 宏
' 宏录制于 2016 年 1 月 4 日,由 ejbytes 提供
    '变量
    Dim count 作为整数
    Dim LIST 作为整数
    Dim currSheet 作为工作表
    Dim myChart 作为 ChartObject
    将 YesOrNoAnswerToMessageBox 设置为字符串
    Dim QuestionToMessageBox 作为字符串
    Dim tmpName 作为字符串


    '定义变量
    计数 = ActiveWorkbook.Worksheets.计数

    '****************************************************
    '使用计数的循环示例。*
    '****************************************************
    对于 LIST = 1 进行计数
        MsgBox“这是一个循环示例。这是工作表:”_
                 & ActiveWorkbook.工作表(LIST).名称
    下一条列表



    '****************************************************
    '* 循环示例此工作簿中的所有工作表 *
    '* 循环浏览每张工作表 *
    '* 嵌套循环: *
    '* *
    '* 外循环 *
    '****************************************************
    对于工作表中的每个当前工作表
        MsgBox "当前工作表:" & currSheet.Name

        '****************************************************
        '* 循环浏览当前工作表上的每个图表对象 *
        '* Sheets("Sheet1").ChartObjects *
        '* *
        '* 内循环 *
        '****************************************************
        对于 currSheet.ChartObjects 中的每个 myChart

            QuestionToMessageBox = "删除图表:'" & myChart.Name & "' ?"
            YesOrNoAnswerToMessageBox = _
                MsgBox(QuestionToMessageBox, vbYesNo, “是/否评论?”)

            如果 YesOrNoAnswerToMessageBox = vbNo 那么
                MsgBox "图表:" & myChart.Name & "已跳过。"
            别的
                tmpName = myChart.名称
                删除图表
                MsgBox "图表:" & tmpName & "已删除!"
                '修改我的图表?您也可以这样做:
                'myChart.Chart.ChartType = xlLine
            万一
        下一个 myChart
    下一个

子目录结束

答案2

要删除活动工作表上的所有图表:

Sub DeleteChartsOnActiveSheet()
  ActiveSheet.ChartObjects.Delete
End Sub

要删除活动工作簿中所有工作表上的所有图表:

Sub DeleteChartsInActiveWorkbook()
  ' delete chart sheets
  ActiveWorkbook.Charts.Delete

  ' delete charts embedded in other sheets
  Dim sh As Object
  For Each sh in ActiveWorkbook.Sheets
    sh.ChartObjects.Delete
  Next
End Sub

答案3

Sub DeleteChartsInThisWorkbook()

Dim Msg As String  
Dim cws As Chart  
Dim cobj As ChartObject  
Dim wb As Workbook  
Dim ws As Worksheet

1    On Error GoTo ErrorHandler  
'    Delete chart sheets  
2    Set wb = ThisWorkbook  
3    For Each cws In wb.Charts  
4      Application.DisplayAlerts = False  
5      cws.Delete  
6      Application.DisplayAlerts = True  
7    Next cws  

'    Delete charts embedded in all other worksheets  
8    For Each ws In wb.Sheets  
9      For Each cobj In ws.ChartObjects  
10       cobj.Delete  
11     Next cobj  
12   Next ws  

13   Exit Sub  
ErrorHandler:  
14   If Err.Number <> 0 Then  
15      Msg = "Error # " & str(Err.Number) & " was generated by " & chr(13) _  
            & "Sub DeleteChartsInThisWorkbook() on Sheet#(Name)" & chr(13) _  
            & "Error Line: " & Erl & chr(13) _  
            & Err.Description  
16       MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext  
17   End If  
End Sub  

相关内容