【问题标题】:VBA crops shapes (OLEobjects and Charts) involuntarilyVBA 不自觉地裁剪形状(OLEobjects 和 Charts)
【发布时间】: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


    【解决方案1】:

    我之前遇到过这个问题,据我所知,当您更改 Excel 工作簿上的缩放系数时,它会出现。当您粘贴对象并链接它时,它所在的缩放系数会随链接一起保留。如果您更改 Excel 工作簿中的缩放系数,从 100% 变为 150%,则在更新链接时它将沿用新的缩放系数。

    唯一真正的解决方案是确保人们不会更改 Excel 工作簿上的缩放系数。

    【讨论】:

    • 感谢您在浏览互联网几个小时后确认我一直在怀疑的问题。虽然我的印象是只有原始对象所在的工作表的缩放因子会导致问题。是否有一些干净的方法可以将缩放因子设置为不改变?因为我相信即使用户在运行代码之前没有更改 Excel 中的缩放因子,对象的变化也会发生。
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2013-10-05
    • 1970-01-01
    • 2017-06-14
    • 2020-11-02
    相关资源
    最近更新 更多