Как удалить все диаграммы в книгах Excel, используя VBA.

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

2 ответа2

0

Это должно заботиться о ваших потребностях. Он также запрашивает пользователя через MsgBox в качестве меры предосторожности против удаления требуемых диаграмм / объектов.

Sub delAllChartsInWorkbook()
'
' delchart Macro
' Macro recorded 1/4/2016 by ejbytes
'
    'Variables
    Dim count As Integer
    Dim LIST As Integer
    Dim currSheet As Worksheet
    Dim myChart As ChartObject
    Dim YesOrNoAnswerToMessageBox As String
    Dim QuestionToMessageBox As String
    Dim tmpName As String


    'Define Variables
    count = ActiveWorkbook.Worksheets.count

    '****************************************************
    'Loop example using a count.                        *
    '****************************************************
    For LIST = 1 To count
        MsgBox "This is a loop example. This is Sheet: " _
                 & ActiveWorkbook.Worksheets(LIST).Name
    Next LIST



    '****************************************************
    '* Loop example all sheet in this workbook          *
    '* Cycle through each Sheet                         *
    '* Nested Loops:                                    *
    '*                                                  *
    '* Outer Loop                                       *
    '****************************************************
    For Each currSheet In Worksheets
        MsgBox "Current sheet: " & currSheet.Name

        '****************************************************
        '* Cycle through each Chart Object on current sheet *
        '* Sheets("Sheet1").ChartObjects                    *
        '*                                                  *
        '* Inner Loop                                       *
        '****************************************************
        For Each myChart In currSheet.ChartObjects

            QuestionToMessageBox = "DELETE chart: '" & myChart.Name & "' ?"
            YesOrNoAnswerToMessageBox = _
                MsgBox(QuestionToMessageBox, vbYesNo, "Yes/No Comment?")

            If YesOrNoAnswerToMessageBox = vbNo Then
                MsgBox "Chart: " & myChart.Name & " skipped."
            Else
                tmpName = myChart.Name
                myChart.Delete
                MsgBox "Chart: " & tmpName & " Deleted!"
                'Modify my chart? You can do this too:
                'myChart.Chart.ChartType = xlLine
            End If
        Next myChart
    Next

End Sub
0

Чтобы удалить все диаграммы на активном листе:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .