【发布时间】:2019-05-20 00:22:04
【问题描述】:
我一直遇到以下问题。
我使用 VBA 来使用用户选择的信息更新 Powerpoint 幻灯片。用户选择选定的数据,刷新适当的表格/图表,然后在 Powerpoint 中更新这些数据。一些用户遇到了一个问题,即卡片组已更新,但 OLE 对象(图表、Excel 表格)被裁剪。
我一直在使用以下代码来存储更新形状的大小和位置。它适用于大多数用户,但在少数情况下,程序似乎正在调整对象的大小,但将它们存储在预定义的占位符中,因此它们在幻灯片上正确定位,但被裁剪(就像它们被缩放大约 10 到20%)。
感谢您提供任何帮助。
For Each aSlide In pptPresentation.Slides
For Each aShape In aSlide.Shapes
With aShape
.LockAspectRatio = msoTrue
.Tags.Add Name:="L", Value:=CStr(.Left)
.Tags.Add Name:="T", Value:=CStr(.Top)
.Tags.Add Name:="H", Value:=CStr(.Height)
.Tags.Add Name:="W", Value:=CStr(.Width)
End With
Next
Next
'Update slides in PowerPoint Presentation with new content
For Each aSlide In pptPresentation.Slides
For Each aShape In aSlide.Shapes
If (aShape.Type = msoLinkedOLEObject) Or (aShape.Type = msoChart) Then
aShape.LinkFormat.Update
End If
Next
Next
pptPresentation.UpdateLinks
For Each aSlide In pptPresentation.Slides
For Each aShape In aSlide.Shapes
With aShape
' skip untagged shapes:
sTest = .Tags("L") & .Tags("T") & .Tags("H") & .Tags("W")
If Len(sTest) > 0 Then
.Left = CSng(.Tags("L"))
.Top = CSng(.Tags("T"))
.Height = CSng(.Tags("H"))
.Width = CSng(.Tags("W"))
End If
End With
Next
Next
【问题讨论】:
标签: excel vba crop powerpoint shapes