Определение размера изображения в макросе (Microsoft Word)
Word хранит довольно много информации об изображениях, которые вы вставляете в свои документы. Эта информация необходима для того, чтобы Word знал, как изменять размер, положение и отображение изображений. Если вы хотите узнать больше об изображениях в документе, вам нужно кое-что узнать о том, как Word хранит эту информацию.
Изображения хранятся в виде графических объектов двух типов: обычных или встроенных. Обычные формы — это те, которые находятся на слое рисования, в отличие от встроенных фигур, которые находятся в текстовом слое. Оба типа объектов хранятся в разных коллекциях объектов. Обычные фигуры находятся в коллекции Shapes, а встроенные фигуры хранятся в коллекции InlineShapes. Чтобы получить доступ к информации об объектах, вам просто нужно немного использовать VBA.
Следующий макрос VBA будет работать в Word 2000 (или более поздних версиях) для создания документа, который отображает размер всех графических объектов в документе как в точках, так и в пикселях:
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 97, поскольку Word 97 не распознает инструкцию PointsToPixels. Если вы удалите строки, в которых используется этот оператор (или создадите свою собственную функцию PointsToPixels), то макрос будет нормально работать в Word 97.
Обратите внимание, что макрос возвращает имена обычных фигур, но не имена встроенных фигур. Причина этого в том, что Word не поддерживает имена встроенных фигур. Когда вы вставляете в документ обычную фигуру (опять же, на слой рисунка), Word присваивает этой фигуре имя, например, Прямоугольник 2 или Овал 3.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (1497) применим к Microsoft Word 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Word (Word 2007 и позже) здесь:
link: / wordribbon-Determining_Picture_Size_in_a_Macro [Определение размера изображения в макросе]
.