如何使用 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