Word хранит довольно много информации об изображениях, которые вы вставляете в свои документы. Эта информация необходима для того, чтобы Word знал, как изменять размер, положение и отображение изображений. Если вы хотите узнать больше об изображениях в документе, вам нужно кое-что узнать о том, как Word хранит эту информацию.

Изображения хранятся в виде графических объектов двух типов: обычных или встроенных. Обычные формы — это те, которые находятся на слое рисования, в отличие от встроенных фигур, которые находятся в текстовом слое. Оба типа объектов хранятся в разных коллекциях объектов. Обычные фигуры находятся в коллекции Shapes, а встроенные фигуры хранятся в коллекции InlineShapes. Чтобы получить доступ к информации об объектах, вам просто нужно немного использовать VBA.

Следующий макрос VBA создает документ, который отображает размер всех графических объектов в документе как в точках, так и в пикселях:

Sub FigureInfo()

Dim iShapeCount As Integer     Dim iILShapeCount As Integer     Dim DocThis As Document     Dim J As Integer     Dim sTemp As String

Set DocThis = ActiveDocument     Documents.Add

iShapeCount = DocThis.Shapes.Count     If iShapeCount > 0 Then         Selection.TypeText Text:="Regular Shapes"

Selection.TypeParagraph     End If     For J = 1 To iShapeCount         Selection.TypeText Text:=DocThis.Shapes(J).Name         Selection.TypeParagraph         sTemp = "     Height (points): "

sTemp = sTemp & DocThis.Shapes(J).Height         Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Width (points): "

sTemp = sTemp & DocThis.Shapes(J).Width         Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Height (pixels): "

sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Height, True)

Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Width (pixels): "

sTemp = sTemp & PointsToPixels(DocThis.Shapes(J).Width, False)

Selection.TypeText Text:=sTemp         Selection.TypeParagraph         Selection.TypeParagraph     Next J

iILShapeCount = DocThis.InlineShapes.Count     If iILShapeCount > 0 Then         Selection.TypeText Text:="Inline Shapes"

Selection.TypeParagraph     End If     For J = 1 To iILShapeCount         Selection.TypeText Text:="Shape " & J         Selection.TypeParagraph         sTemp = "     Height (points): "

sTemp = sTemp & DocThis.InlineShapes(J).Height         Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Width (points): "

sTemp = sTemp & DocThis.InlineShapes(J).Width         Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Height (pixels): "

sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Height, True)

Selection.TypeText Text:=sTemp         Selection.TypeParagraph         sTemp = "     Width (pixels): "

sTemp = sTemp & PointsToPixels(DocThis.InlineShapes(J).Width, False)

Selection.TypeText Text:=sTemp         Selection.TypeParagraph         Selection.TypeParagraph     Next J End Sub

Обратите внимание, что макрос возвращает имена обычных фигур, но не имена встроенных фигур. Причина этого в том, что Word не поддерживает имена встроенных фигур. Когда вы вставляете в документ обычную фигуру (опять же, на слой рисунка), Word присваивает этой фигуре имя, например, Прямоугольник 2 или Овал 3.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (8343) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для старый интерфейс меню Word здесь:

link: / word-Determining_Picture_Size_in_a_Macro [Определение размера изображения в макросе].