Масштабирование картинок, макросы и ляпсусы

 

С версии 6.0 до 2003 прошло около 10 лет, но заплесневелая парадигма Microsoft осталась неизменной «Автоматизация это программирование на VBA». Для автоматизации рутинных работ в Word 2003 непременно требуется ручная работа, знание синтаксиса VBA и объектной модели Word.

Вручную

Вставляем картинку в Word-документ и устанавливаем ее масштаб в 75% от исходного. Процедура проста:

 

  1. Выделить картинку.
  2. Нажать правую кнопку мышки и выбрать Format Picture… Откроется диалог Format Picture.
  3. Выбрать вкладку Size.
  4. В области Scale выбрать поле Height и ввести 75.
  5. Нажать Ok.

 

Цель достигнута, установлен масштаб 75% от исходного размера. Лишь на шаге 4 пришлось выполнять лишние движения руками. На самом деле процедура такова:

 

  1. Выделить картинку.
  2. Нажать правую кнопку мышки и выбрать Format Picture… Откроется диалог Format Picture.
  3. Выбрать вкладку Size.
  4. В области Scale щелкнуть по полю Height.
  5. Удалить содержимое поля Height.
  6. Ввести 75.
  7. Нажать Ok.

 

Почему мы выполняем лишние шаги 4 и 5? Потому что разработчики упустили очевидное – если пользователь щелкает по полю Height, то он будет вводить новое значение. А это значит, что Word должен выделить текущее значение поля.

 

Хотелось бы сократить два шага 5 и 6 до одного, поэтому новая процедура получается короче:

  1. Выделить картинку.
  2. Нажать правую кнопку мышки и выбрать Format Picture… Откроется диалог Format Picture.
  3. Выбрать вкладку Size.
  4. В области Scale сделать двойной щелчок по числу 100 в поле Height – число будет полностью выделено:

 

  1. Теперь для замены числа 100 достаточно просто ввести 75.
  2. Нажать Ok.

Автоматом

Если картинок несколько, ручная работа становится утомительной. Чтобы превратить 6 шагов в один, можно воспользоваться автоматической записью шести операций пользователя в один макрос.

 

Начинаем запись макроса:

  1. Выбрать пункт меню Tools, затем Macro и Record New Macro. Появится диалог Record Macro.
  2. Ввести имя макроса – в нашем примере это Macro1.
  3. Нажать [Ok]. Появится инструментальная панель, с помощью которой можно остановить запись макроса.

 

И сразу же попытка автоматизации наталкивается на проблему – правая кнопка мыши стала бесчувственной. Да, действительно, Word не воспринимает правую кнопку мыши при записи макро.

 

Обходим проблему сбоку.

 

Начинаем запись макроса:

  1. Выбрать пункт меню Tools, затем Macro и Record New Macro. Появится диалог Record Macro.
  2. Ввести имя макроса.
  3. Нажать [Ok]. Появится инструментальная панель, с помощью которой можно остановить запись макроса.
  4. Выделить картинку.
  5. Выбрать пункт меню Format, затем Picture… Откроется диалог Format Picture.
  6. Выбрать вкладку Size.
  7. В области Scale сделать двойной щелчок по числу 100 в поле Height – число будет полностью выделено:

 

  1. Теперь для замены числа 100 достаточно просто ввести 75.
  2. Нажать Ok.
  3. Завершить запись макроса нажатием на кнопку  в инструментальной панели

 

Казалось бы, полученный макрос можно применить к любой картинке. Но если ознакомиться с кодом макроса, можно обнаружить только одну полезную строчку. Синие строки совершенно бесполезны, а зеленые привязаны к абсолютным размерам одной картинки.

 

Sub Macro1()

    Selection.InlineShapes(1).Fill.Visible = msoFalse

    Selection.InlineShapes(1).Fill.Solid

    Selection.InlineShapes(1).Fill.Transparency = 0#

    Selection.InlineShapes(1).Line.Weight = 0.75

    Selection.InlineShapes(1).Line.Transparency = 0#

    Selection.InlineShapes(1).Line.Visible = msoFalse

    Selection.InlineShapes(1).LockAspectRatio = msoTrue

    Selection.InlineShapes(1).Height = 230.75

    Selection.InlineShapes(1).Width = 234.15

    Selection.InlineShapes(1).PictureFormat.Brightness = 0.5

    Selection.InlineShapes(1).PictureFormat.Contrast = 0.5

    Selection.InlineShapes(1).PictureFormat.ColorType = msoPictureAutomatic

    Selection.InlineShapes(1).PictureFormat.CropLeft = 0#

    Selection.InlineShapes(1).PictureFormat.CropRight = 0#

    Selection.InlineShapes(1).PictureFormat.CropTop = 0#

    Selection.InlineShapes(1).PictureFormat.CropBottom = 0#

End Sub

 

Чтобы макрос действительно смог масштабировать картинку произвольного размера до 75% от оригинального размера, его придется коренным образом переделать:

 

Sub Macro1()

    Selection.InlineShapes(1).LockAspectRatio = msoTrue

    Selection.InlineShapes(1).Height = Selection.InlineShapes(1).Height * 0.75

    Selection.InlineShapes(1).Width = Selection.InlineShapes(1).Width * 0.75

End Sub

 

Реклама
Запись опубликована в рубрике Uncategorized. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s