Проблема в том, что я создаю новое изображение формы, чтобы заменить предыдущее.Однако даже если новые свойства формы Top и Left точно такие же, как на предыдущем изображении, новая фигура смещается.Это происходит в форме заголовка.Я считаю, что есть какое-то скрытое свойство, которое я не могу найти на часах VBA.
Я добавляю код следующим образом (упрощенная версия):
For i = ActiveDocument.Sections(1).Headers(1).Shapes.count To 1 Step -1
'shape to delete:
set shp2del = ActiveDocument.Sections(1).Headers(1).Shapes(i)
'shape to add
Set shp2 = ActiveDocument.Sections(1).Headers(1).Shapes.AddPicture(replace_path, False, True, shp2del.Left, shp2del.Top, shp2del.width, shp2del.height)
shp2del.delete
next i
Ивуаля, он создает объект shp2, удаляет shp2del .. с небольшой проблемой, в некоторых документах он не остается в позиции.
Я пробовал много вещей, переопределяя shp2.top и shp2.left после созданияискал свойства относительного положения, свойства объекта привязки по сравнению с формой для удаления и новой формой, и все казалось одинаковым, если только я (скорее всего) не пропустил свойство.
Я также пыталсясоздайте макрос и посмотрите код, который изменит новую форму в положение, но, к сожалению, при создании слова макроса не очень хорошо обрабатывать картинки ..
Единственный совет, который я нашел, был этот, ночтобы изменить это программно, я не знаю, как.
Обновление:
После ответа от m4o_tim варианты, которые отображает слово, более соответствуютВ итоговом документе все еще остаются неверные расстояния
![old shape on left, new one on right](https://i.stack.imgur.com/Zqpuy.png)
Мне также любопытно, что якорь замка и разрешает перекрытие, но это наверняка скрытов shp2.anchor, и я попробую это.
Что касается абсолютной позиции, я не смог найти свойство, которое мог бы установить.Спасибо за помощь, m4o_tim, есть кто-нибудь еще, кто может помочь?
Обновление 2: Наконец-то все работает, в основном нужно переопределить верхнюю и левую позиции после настроек
With newshp
.WrapFormat.Type = oldshp.WrapFormat.Type
.RelativeHorizontalPosition = oldshp.RelativeHorizontalPosition
.LeftRelative = oldshp.LeftRelative
.RelativeVerticalPosition = oldshp.RelativeVerticalPosition
.TopRelative = oldshp.TopRelative
.Top = oldshp.Top
.Left = oldshp.Left
.LockAnchor = oldshp.LockAnchor
End With
После этого он работал отлично.Спасибо m4o_tim
Обновление 3: я понял, что это, к счастью, сработало только в одном разделе.Причиной для этого является позиция привязки.
Если я сравню shp2del.Anchor.Information (wdVerticalPositionRelativeToPage) с shp2.Anchor.Information (wdVerticalPositionRelativeToPage)
Я получу разные значения.Я открою новый вопрос по этому поводу.Спасибо всем.