1

Тема: Программно назначить Shape: Выравнивание

Всем доброго дня
В цикле переконвертировал в нужный формат кучу Shape.
Не знаю как обратиться к свойствам, отвечающим за выравнивание.
Нужно установить выравнивание по центру относительно страницы.
Макрос в ворде не хочет записывать эти действия.
Но ведь, наверняка, это можно сделать макросом

2

Re: Программно назначить Shape: Выравнивание

Нужно использовать два свойства. Первое RelativeHorizontalPosition, чтобы задать относительно чего выравнивать положение фигуры. И второе — LeftRelative, чтобы в процентах задать выравнивание. Например, для выравнивания по-горизонтали относительно страницы нужно задать RelativeHorizontalPosition= wdRelativeHorizontalPositionPage и LeftRelative = 50

Лучше день потерять — потом за пять минут долететь!

3

Re: Программно назначить Shape: Выравнивание

есть несколько типов графических элементов
для shape

Sub w130410_1419()
Dim sh As Shape
Dim n1, n2

Debug.Print "Shapes=", Word.ActiveDocument.Shapes.Count
Debug.Print "InlineShapes=", Word.ActiveDocument.InlineShapes.Count
Debug.Print "Frames=", Word.ActiveDocument.Frames.Count

For Each sh In Word.ActiveDocument.Shapes
With sh
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
End With
With sh

'.LeftRelative = 25   ''дает ошибку
''d------------в комментах --отладка---
''Debug.Print 101, .RelativeHorizontalPosition, LeftRelative, 999
''25.4-72p    ''дюйм=25.4мм=72пункта
''125- xp
n1 = (.Width * 25.4 / 72) / 2   ''mm
'n2 = .Left * 25.4 / 72          ''mm
'.Width
.Left = (105 - n1) * 72 \ 25.4  ''point
'InchesToPoints(1)
'InchesToPoints(1)
''Debug.Print 102, .Left, .Width, n1, n2


End With
Next sh
Debug.Print "fin="; Now
End Sub