Я пытаюсь скопировать диапазоны из листа Excel и вставить их в слайды в виде таблиц, затем расположить и изменить их размер. Однако, когда я пытаюсь расположить фигуры в ppt, метод .Left не работает должным образом; на миниатюрах слайдов в левой части экрана фигуры находятся в ожидаемых положениях (по центру, как в приведенном ниже коде), но при выборе слайда фигуры смещаются вправо от того места, где они должны быть.
Я подумал, что он может использовать «центр» в качестве исходной точки вместо левой границы слайда, но это не совпадает с величиной смещения.
Был бы очень признателен за помощь в этом - было бы полезно знать, если это ошибка в ppt или ошибка в моем коде, так как если это ошибка, это сильно влияет на осуществимость этого проекта. Для этого конкретного примера я мог бы, вероятно, использовать метод .Align в качестве обходного пути, но для последующих слайдов мне нужно иметь возможность точно позиционировать несколько фигур на одном слайде.
Я использую Office 365.
Код ниже:
Sub PP_export()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim XLws As Worksheet
Set PPApp = New PowerPoint.Application
Set XLws = ActiveSheet
Set PPPres = PPApp.Presentations.Open("Y:\Research\PROJECTS\2018\Magic Macro\ppt_template_.potx")
PPApp.Visible = True
''Lifestyle Statements
'By Col%
Set PPSlide = PPPres.Slides(3)
Dim LSCol As PowerPoint.Shape
XLws.Range("M106:o126").Copy
PPSlide.Shapes.PasteSpecial ppPasteDefault
Set LSCol = PPSlide.Shapes("Table 2")
With LSCol
.Left = (28.35 * 10.56)
.Top = (28.35 * 3.83)
.Height = (28.35 * 13.21)
.Width = (28.35 * 12.75)
End With
'By Index
Set PPSlide = PPPres.Slides(4)
Dim LSIndex As PowerPoint.Shape
XLws.Range("Q106:s126").Copy
PPSlide.Shapes.PasteSpecial ppPasteDefault
Set LSIndex = PPSlide.Shapes("Table 2")
With LSIndex
.Left = (28.35 * 10.56)
.Top = (28.35 * 3.83)
.Height = (28.35 * 13.21)
.Width = (28.35 * 12.75)
End With