Excel.Workbook.Close не будет обновлять powerpoint.chart

Я пытаюсь создать слайд PowerPoint с данными Excel. В основном я создаю новый слайд PowerPoint, а затем добавляю данные Excel Pivot на график с помощью VBA.

Но из-за большого количества графиков на слайде выполнение кода, очевидно, начинает замедляться, и мне нужно закрыть каждое окно chartData после ввода данных графика.

И если я пытаюсь закрыть окно диаграммы с "Workbook.Close", диаграмма в PowerPoint не учитывает данные, которые я ввел в лист диаграммы. Не буду обновлять график.

Кроме того, если я не закрываю какое-либо окно диаграммы данных, код работает отлично, и каждая диаграмма на слайде обновляется, как и должно быть.

Вот пример кода:

        Dim Pas_Shop_Chart As PowerPoint.Chart
        Dim Pas_Shop_ChartData As ChartData
        Dim Pas_Shop_Workbook As Excel.Workbook
        Dim Pas_Shop_Worksheet As Excel.Worksheet
        Dim Pas_ShopChartData(10, 4) As Variant

        'Pas Shop Chart Data
        Sheets("Pas Shop").Select
        Sheets("Pas Shop").PivotTables("PivotTable2").PivotFields("REGION").ClearAllFilters
        Sheets("Pas Shop").PivotTables("PivotTable2").PivotFields("REGION").CurrentPage = Region
        Sheets("bayi baz").PivotTables("PivotTable2").PivotFields("Subs. Type").ClearAllFilters
        Sheets("bayi baz").PivotTables("PivotTable2").PivotFields("Subs. Type").CurrentPage = "Pas"
        Pas_Shop_Chart_Title = Range("d1").Value

        For i = 1 To 10

                Pas_ShopChartData(i, 1) = Sheets("Pas Shop").Cells(i + 5, 1)
                Pas_ShopChartData(i, 2) = Sheets("Pas Shop").Cells(i + 5, 2)
                Pas_ShopChartData(i, 3) = Sheets("Pas Shop").Cells(i + 5, 3)
                Pas_ShopChartData(i, 4) = Sheets("Pas Shop").Cells(i + 5, 4)
        Next i

    'Creating Powerpoint Page
    Set objPPApp = CreateObject("PowerPoint.Application")
    objPPApp.Visible = msoTrue
    Set objPresentation = objPPApp.Presentations.Add
    Set objSlide = objPresentation.Slides.Add(1, ppLayoutBlank)

    'Powerpoint Page Setup
    With objPresentation.PageSetup
            .SlideSize = ppSlideSizeCustom
            .SlideWidth = 1140
            .SlideHeight = 3130
    End With

         ' PAS SHOP CHART
        Set Pas_Shop_Chart = objSlide.Shapes.AddChart.Chart
        Set Pas_Shop_ChartData = Pas_Shop_Chart.ChartData
        Set Pas_Shop_Workbook = Pas_Shop_ChartData.Workbook
        Set Pas_Shop_Worksheet = Pas_Shop_Workbook.Worksheets(1)

          ' PAS SHOP CHART DATA

            Pas_Shop_Worksheet.ListObjects("Table1").Resize Pas_Shop_Worksheet.Range("A1:c11")
            Pas_Shop_Worksheet.Range("Table1[[#Headers],[Series 1]]").Value = "Ratio"
            Pas_Shop_Worksheet.Range("Table1[[#Headers],[Series 2]]").Value = "Region Med."

              For i = 1 To 10
                        Pas_Shop_Worksheet.Cells(i + 1, 1).Value = Pas_ShopChartData(i, 1)
                        Pas_Shop_Worksheet.Cells(i + 1, 2).Value = Pas_ShopChartData(i, 4)
                        Cells(i + 1, 3).Value = Region_pas_general_perc2

                Next i
                        Pas_Shop_Worksheet.Columns("B:C").Style = "Percent"
                        Pas_Shop_Worksheet.Columns("B:C").NumberFormat = "0.0%"


            With Pas_Shop_Chart
                .ChartGroups(1).GapWidth = 50
                .ChartType = 51
                .HasTitle = True
                .ChartTitle.Text = Pas_Shop_Chart_Title
                .ChartTitle.Format.TextFrame2.TextRange.Font.Name = "Arial"
                .ChartTitle.Format.TextFrame2.TextRange.Font.Size = 18
                .ChartTitle.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
                .Parent.Height = 290
                .Parent.Width = 540
                .Parent.Top = 1182.5
                .Parent.Left = 582.5
                .Legend.Delete
                .Axes(xlCategory).TickLabels.Font.Size = 12
                .Axes(xlCategory).TickLabels.Font.Name = "Calibri"
                .Axes(xlValue).TickLabels.Font.Size = 12
                .Axes(xlValue).TickLabels.Font.Name = "Calibri"
                .ApplyDataLabels (xlDataLabelsShowValue)
                .SeriesCollection(1).DataLabels.Font.Name = "Arial"
                .SeriesCollection(1).DataLabels.Font.Size = 14
                .SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
                .SeriesCollection(2).ChartType = xlLine
                .SeriesCollection(2).Format.Line.Weight = 4.5
                .SeriesCollection(2).Format.Line.DashStyle = msoLineRoundDot
                .SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(0, 0, 0)
                .SeriesCollection(2).DataLabels.Delete
                .FullSeriesCollection(2).Points(1).Select
                .SetElement (msoElementDataLabelShow)
                .SetElement (msoElementDataLabelLeft)
                .SeriesCollection(2).DataLabels.Font.Name = "Arial"
                .SeriesCollection(2).DataLabels.Font.Size = 14
                .Axes(xlValue).MajorGridlines.Delete
                .Axes(xlCategory).TickLabels.Font.Size = 11
                .Axes(xlCategory).TickLabels.Font.Name = "Calibri"
                .Axes(xlCategory).TickLabels.Font.Bold = True
                .Axes(xlValue).Delete
                .PlotArea.Left = 5
                .PlotArea.Height = 225
                .PlotArea.Top = 50
                End With

Я щелкнул код, чтобы показать код только для одного графика. Я использую Office 2016. Кто-нибудь еще сталкивался с этой проблемой?

Благодарю вас,

0 ответов

Другие вопросы по тегам