Статьи из блога
Статьи из блога
Определяем тип графического объекта и его размеры
Рубрика: Макросы
Метки: графика | макросы
Пятница, 29 января 2010 г.
Просмотров: 3113
Подписаться на комментарии по RSS
Версия для печати
Метки: графика | макросы
Пятница, 29 января 2010 г.
Просмотров: 3113
Подписаться на комментарии по RSS
Версия для печати
Заметка навеяна поиском решения (см. ) для применения к рисункам заданного размера по высоте. Под рисунком мы будем в общем случае понимать графический объект в тексте документа. Это может быть как вставленная в документ картинка, фотография (тип InlineShape), так и нарисованная средствами редактора Word диаграмма, автофигура или иной объект. Более подробную информацию о видах рисунков в Word можно почитать на официальном сайте Microsoft ().
В итоге родился следующий макрос, результат работы которого выглядит как простое сообщение:

Чтобы получить информацию о рисунке, необходимо выделить его и применить макрос:
Sub getSizesImage()
'Определение типа графического объекта и его размеров (высоты и ширины)
Dim h As Single
Dim w As Single
Dim hSp As Single
Dim str As String
Dim strSize As String
With Selection
Select Case .Type
Case Word.WdSelectionType.wdSelectionInlineShape
'получаем высоту объекта
h = Round(PointsToCentimeters(.InlineShapes(1).Height), 1)
'получаем ширину объекта
w = Round(PointsToCentimeters(.InlineShapes(1).Width), 1)
str = "Это рисунок (InlineShape)." & vbCr & "Его высота: " & h & " см, ширина: " & w & " см"
Case Word.WdSelectionType.wdSelectionShape
'получаем высоту объекта
h = PointsToCentimeters(.ShapeRange(1).Height)
'получаем ширину объекта
w = PointsToCentimeters(.ShapeRange(1).Width)
str = "Это объект (Shape)." & vbCr & "Его высота: " & h & " см, ширина: " & w & " см"
Case Else
str = "Это не графический объект"
End Select
End With
MsgBox str
End Sub

Поиск
Рубрики
Подписка
Читают
Обсуждают
страницы
сайты
статистика
Комментариев: 2
Разделение изображений, используемых в Microsoft Word, на графические объекты и рисунки, описанное на официальном сайте Microsoft, никак не совпадает с разделением на классы Shape и InlineShape. Помимо этого в интерфейсе пользователя и в справке Microsoft Word используется еще одно разделение на встроенные и перемещаемые объекты.
Например, любой объект InlineShape (им может быть рисунок, диаграмма или объект WordArt), находящийся в основном тексте документа или в колонтитуле и не содержащийся в объекте Shape, можно обратимо преобразовать в объект Shape, при этом вид его не изменится и он не обязательно при этом станет перемещаемым.
Заметив путаницу, возникающую при классификации изображений в Microsoft Word, я специально написал небольшую статью об объектах Shape и InlineShape и о работе с ними средствами VBA на странице markros.ru/graphics/.
Марк, спасибо что напомнили. Я все хотел дать ссылку на вашу статью в виде отдельной заметки. И после вашего комментария я это сделал:
http://wordexpert.ru/page/obrabotka-grafiki-v-microsoft-word-sredstvami-vba.