VBA: вставка данных Excel в Powerpoint chartData - PullRequest
0 голосов
/ 23 марта 2020

Я полный новичок ie в VBA, поэтому прошу прощения за возможные ошибки c. Я искал похожий ответ, но ни один не показался мне точно подходящим.

Мне нужно создать слайд-шоу PowerPoint с графиками. Источником данных для каждого графика является файл Excel. Презентация довольно длинная и тяжелая. В конце концов, копия презентации (без макросов) будет сохранена как другой файл и отправлена, но ее необходимо будет изменить на более поздних этапах, поэтому я решил скопировать данные из excel в dataChart для каждой диаграммы в слайд-шоу.

Первый и основной вопрос: при попытке скопировать данные я получаю одну из следующих двух ошибок: «Объект не поддерживает это свойство или метод (Ошибка 438)» или, в некоторых других комбинациях, «Подстрочный индекс" диапазона (Ошибка 9) ".

Второй и второстепенный вопрос: если у кого-нибудь есть идеи относительно лучшей структуры для всей операции, я с радостью приму предложения.


Dim sld As Slide
Dim shp As Shape

Call openxcl 'see below

For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
        If shp.HasChart = msoTrue Then
            With shp
                'doing other things
                End With
            With shp.Chart
                .ChartData.Activate
                .ChartData.Workbook.Worksheets(1).Cells.Clear
                .ChartData.Workbook.Worksheets(1).Range("A1:E6").Paste  'Here I get my error
                .ChartTitle.Text = shp.Chart.ChartData.Workbook.Sheets(1).Range("A1").Value
                .ChartData.Workbook.Close
            End With
        End If
    Next shp
Next sld

End Sub

Sub openxcl()

Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open "C:\path\Source.xlsx", True, False
AppActivate ("Source.xlsx - Excel")

Dim test As Workbook
Set test = ActiveWorkbook
test.Sheets(1).Activate

With test.Sheets(2).Range("A1:E6")
    '.Select
    .Copy
End With

Set xlApp = Nothing
Set test = Nothing

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...