Статьи из блога

Определяем тип графического объекта и его размеры

Заметка навеяна поиском решения (см. комментарий) для применения к рисункам заданного размера по высоте. Под рисунком мы будем в общем случае понимать графический объект в тексте документа. Это может быть как вставленная в документ картинка, фотография (тип 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
Рубрика: Макросы
Метки: |
Просмотров: 16483
Подписаться на комментарии по RSS
Версия для печати

[Ссылки на статью]

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 2

  1. Марк Розенберг
    18.04.2010 в 16:11 | #1

    Разделение изображений, используемых в Microsoft Word, на графические объекты и рисунки, описанное на официальном сайте Microsoft, никак не совпадает с разделением на классы Shape и InlineShape. Помимо этого в интерфейсе пользователя и в справке Microsoft Word используется еще одно разделение на встроенные и перемещаемые объекты.

    Например, любой объект InlineShape (им может быть рисунок, диаграмма или объект WordArt), находящийся в основном тексте документа или в колонтитуле и не содержащийся в объекте Shape, можно обратимо преобразовать в объект Shape, при этом вид его не изменится и он не обязательно при этом станет перемещаемым.

    Заметив путаницу, возникающую при классификации изображений в Microsoft Word, я специально написал небольшую статью об объектах Shape и InlineShape и о работе с ними средствами VBA на странице markros.ru/graphics/.

  2. 18.04.2010 в 16:38 | #2

    Марк, спасибо что напомнили. Я все хотел дать ссылку на вашу статью в виде отдельной заметки. И после вашего комментария я это сделал:

    http://wordexpert.ru/page/obrabotka-grafiki-v-microsoft-word-sredstvami-vba.

Оставьте комментарий!

(обязательно)

^ Наверх