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

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

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

Рубрика: Макросы
Метки: |
Пятница, 29 января 2010 г.
Просмотров: 15733
Подписаться на комментарии по 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
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.

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

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

^ Наверх