1

Тема: VBA: Поиск в ворд документе рисунков и их координат

Как можно кодом VBA найти в ворд документе рисунки и их координаты ?
Как можно кодом VBA найти на последней странице  ворд документа рисунки и их координаты ?
Допускаю, что рисунки могут быть прикреплены к ячейкам таблиц, которые есть в документе.

И как их можно после найденных координат программно двигать рисунки? (влево, вправо, вверх, вниз).
Устанавливая при этом свойство, нахождения рисунка перед текстом.

2 (изменено: VBAdevelope, 2023-04-12 17:28:01)

Re: VBA: Поиск в ворд документе рисунков и их координат

Рисунки ищем перебором. Если речь идёт о InlineShape, то

Dim oInlShp as InlineShape
For Each oInlShp in ActiveDocument.InlineShapes

Next oInlShp 

Но их двигать не получится. Они являются частью .Range документа. Можно взять их начало и конец для выделения, а также использовать метод .ConvertToShape для двиганья всего, что не двигается.

iStart = oInlShp.Range.Start
iEnd = oInlShp.Range.End
oDoc.Range(iStart, iEnd).Select
Selection.Range.InlineShapes(1).ConvertToShape

Для Shapes то же самое с перебором только

Dim oShp as Shape
For Each oShp in ActiveDocument.Shapes

Next oShp

У них используются свойства Left и Top до левого верхнего угла поля ввода


oShape.Select
iPosL = oShape.left
iPosTop = oShape.top

Вот и двигайте, сколько надо, указывая эти позиции.
Последняя страница определяется так: Смотрим для документа, сравниваем с объектом:

Set oDoc = ActiveDocument
iLast = oDoc.Content.Information(wdActiveEndAdjustedPageNumber)
oShape.Select
If Selection.Information(wdActiveEndAdjustedPageNumber) = iLast Then
	'Двигаем объект 
End if

Во всяком случае я вижу это так.
Ах да, относительно чего они будут перемещаться регулируется свойством .RelativeHorizontalPosition и .RelativeVerticalPosition этих самых Shapes. Есть на майрософте табличка этих констант. А за положение относительно текста отвечает свойсто .WrapFormat.Type = . Также есть ZOrderPosition для смещения относительно других шейпов. По факту всё есть банально в объектной модели Shape на майкрософте.

Разработка VBA макросы Excel, Word на заказ.
Сказать спасибо на Юмани