Я использую следующий код, чтобы выбрать слайды в презентации PowerPoint и связать диаграммы на этих слайдах с файлом Excel, так как мои данные каждый месяц меняются.Код прекрасно работает.
Sub UpdateLinks()
Dim ExcelFile
Dim exl As Object
Set exl = CreateObject("Excel.Application")
Dim sld As Slide
ExcelFile = "C:\Users\J\SampleSourceFile.xlsm"
Dim i As Integer
Dim shp As Shape
Dim L As Long
Dim rayFixed() As Variant
Dim sldR As SlideRange
Dim strInput As String
Dim raySlides() As Long
strInput = InputBox("Input slides to select")
rayFixed = getArray(strInput)
ReDim raySlides(0 To UBound(rayFixed))
For L = 0 To UBound(rayFixed)
raySlides(L) = CLng(rayFixed(L))
Next L
Set sldR = ActivePresentation.Slides.Range(raySlides)
For Each sld In sldR
'Go through every slide
'Go through every shape on every slide
For Each shp In sld.Shapes
On Error Resume Next
'Set the source to be the same as teh file chosen in the
opening dialog box
shp.LinkFormat.SourceFullName = ExcelFile
If shp.LinkFormat.SourceFullName = ExcelFile Then
'If the change was successful then also set it to update
automatically
shp.LinkFormat.Update
'other option is ppUpdateOptionManual
End If
Next shp
Next
End Sub'
Однако есть пара диаграмм, к которым я добавляю данные в файл Excel каждый месяц.Например, last month
мой источник диаграммы был =Tenure!$O$1:$Y$8
, тогда как this month
это было бы =Tenure!$O$1:$Z$8
.
Часть =Tenure!$O$1:$Y$8
обновляется корректно, но Z column
там нет.Несмотря на то, что это точно в связанном файле Excel, Powerpoint заставляет меня вручную выбирать данные и изменять координаты, поскольку PowerPoint сохраняет все, что я использовал ранее (даже после отмены связи / повторного связывания).Мне пришлось повторить то же действие для нескольких графиков, и мне было интересно, есть ли какой-нибудь код, который я мог бы использовать для обновления диапазона без необходимости вручную нажимать на график (даже если он находится в отдельном модуле - я не против обновления кодакаждый месяц для нового диапазона, но одни и те же графики часто находятся на разных # слайдах в зависимости от колоды).