Для выделения всех рисунков (картинок) типа "Shape" я использую это:
ActiveDocument.Shapes.SelectAll
Как выделить все рисунки типа "InlineShape"?
Я выделяю все рисунки, чтобы затем в программе "Word" (вручную, без макроса) их оформить.
В VBA нет инструмента для одновременного выделения всех рисунков типа "InlineShape", можно выделить только один рисунок.
Но можно двигаться по всем рисункам и можно обрабатывать каждый рисунок отдельно.
Но некоторые действия, какие юзер может делать в ворде, нельзя сделать в VBA. Поэтому заранее не известно, возможно ли применить к рисунку нужное оформление с помощью VBA.
Sub Макрос()
Dim рис As InlineShape
' Движение по всем рисункам с типом "InlineShape".
For Each рис In ActiveDocument.InlineShapes
' Отображение высоты рисунка в окне View - Immediate Window.
Debug.Print рис.Height
Next рис
End Sub
Есть методы:
ConvertToInlineShape
ConvertToShape
Возможен ли перевод из InlineShape в Shape, выделение всех картинок с помощью ActiveDocument.Shapes.SelectAll, форматирование вручную, обратный перевод в InlineShape?
Вот так можно перевести все рисунки типа "InlineShape" в рисунки типа "Shape":
Макрос
Sub Макрос()
Dim i As Long
' Движение по всем рисункам с типом "InlineShape" от последнего к первому.
' От первого к последнему не двигаемся, т.к. будет сбиваться
' порядковая нумерация рисунков типа "InlineShape".
' Т.к. после превращения рисунка типа "InlineShape" в "Shape"
' исчезнет рисунок типа "InlineShape".
For i = ActiveDocument.InlineShapes.Count To 1 Step -1
ActiveDocument.InlineShapes(i).ConvertToShape
Next i
End Sub
Вот так можно перевести все рисунки типа "Shape" в рисунки типа "InlineShape":
Макрос
Sub Макрос()
Dim i As Long
' Движение по всем рисункам с типом "Shape" от последнего к первому.
' От первого к последнему не двигаемся, т.к. будет сбиваться
' порядковая нумерация рисунков типа "Shape".
' Т.к. после превращения рисунка типа "Shape" в "InlineShape"
' исчезнет рисунок типа "Shape".
For i = ActiveDocument.Shapes.Count To 1 Step -1
ActiveDocument.Shapes(i).ConvertToInlineShape
Next i
End Sub
После превращения картинок типа "InlineShape" в картинки типа "Shape", все картинки документа оказываются на первом листе друг на друге в куче.
Не обращайте на это внимание. Выделите рисунки, примените оформление и снова превратите их в InlineShape.
Спасибо, теперь все заработало!