Я полный новичок 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