我正在尝试从Excel工作表中复制范围并将其作为表格粘贴到幻灯片中,然后定位并调整它们的大小。但是,当我尝试将形状放在ppt中时,.Left方法的行为不符合预期;在屏幕左侧的幻灯片缩略图中,形状处于预期位置(以下面的代码为中心),但是当我选择幻灯片时,形状会移动到它们应该的位置的右侧。
我认为它可能使用'center'作为参考点而不是幻灯片的左边界但是这与它的偏移量不匹配。
非常感谢一些帮助 - 很高兴知道它是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
答案 0 :(得分:0)
如果使用模板,则需要遍历表和数据。 如果幻灯片3上已有表(表2),则可以使用此表。只需发送excel文件对象和模板(路径+名称) 它可能需要一些修改。
Sub Slide_3(ByRef xlWorkBook, Template)
For Each oSh In Presentations(Template).Slides(3).Shapes
Select Case oSh.Name
Case "Table 2"
For i = 1 To 20
For j = 1 To 3
oSh.Table.Cell(i, j).Shape.TextFrame.TextRange.Text = xlWorkBook.Worksheets(24).Cells(105 + i, j + 12).Value
Next j
Next i
'M106:o126
End Select
Next oSh
End Sub
答案 1 :(得分:0)
我遇到了同样的问题,并且运行了一条调试消息,显示插入后的位置,这似乎是正确的。但是只有缩略图看起来不错,实际的幻灯片是错误的。
我发现在粘贴表格之前激活或显示幻灯片时表格的位置是正确的。另外,如果需要插入几张表,我需要在粘贴操作之间短暂间隔2秒。
我的解决方法非常难看,我仍在寻找原因。这可能是一个错误,但也许也与后台幻灯片的某种偏移有关。