У меня возникла следующая проблема.
Я использую VBA для обновления колоды Powerpoint выбранной пользователем информацией.Пользователи выбирают выбранные данные, обновляют соответствующие таблицы / графики, а затем они обновляются в Powerpoint.У некоторых пользователей возникает проблема, когда колода обновляется, но объекты OLE (диаграммы, таблицы Excel) обрезаются.
Я использовал следующий код для хранения размера и позиций обновленных фигур.,Это работает для большинства пользователей, но в некоторых случаях кажется, что программа изменяет размеры объектов, но сохраняет их в предопределенных заполнителях, поэтому они правильно позиционируются на слайдах, но обрезаются (как будто их масштабирование увеличивается примерно на 1020 процентов).
Любая помощь здесь приветствуется.
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