我一直遇到以下问题。
我使用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
答案 0 :(得分:0)
在您更改Excel工作簿上的缩放倍数之前,从我所学到的问题中发现了此问题。粘贴对象并将其链接时,链接时会保留其原来的缩放比例。如果您在Excel工作簿中更改缩放比例,则从100%变为150%,则更新链接时,它将保留新的缩放比例。
唯一真正的解决方案是确保人们不要更改Excel工作簿上的缩放比例。