VBA, Word и картинки

Программирование на Visual Basic for Applications
Beerukoff
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 10.06.2004 (Чт) 16:31

VBA, Word и картинки

Сообщение Beerukoff » 04.10.2006 (Ср) 13:50

Уважаемые гуру, помогите мне, пожалуйста, написать один макрос.

Вводная - в вордовском файле неизвестное мне количество картинок (более 1 точно), каждая картинка является гиперссылкой.

Цель - нужно уменьшить размер (ширину и высоту) каждой картинки, перевести их в ч/б и удалить гиперссылку.

Пока я даже не могу понять как узнать количество картинок файле и как их по очереди сделать активными, чтобы поправить их параметры.

Спасибо!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.10.2006 (Ср) 13:59

начни с изучения иерархии объектов Word

Подсказка: коллекция InlineShapes тебе поможет
Весь мир матрица, а мы в нем потоки байтов!

Beerukoff
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 10.06.2004 (Чт) 16:31

Сообщение Beerukoff » 04.10.2006 (Ср) 14:27

Почитал справку, провел ряд эксперементов и в итоге у меня заработал такой макрос:

Картинок = ActiveDocument.InlineShapes.Count
For n=1 to Картинок
ActiveDocument.InlineShapes(n).Hyperlink.Delete
ActiveDocument.InlineShapes(n).ConvertToShape
ActiveDocument.Shapes(n).Height = 170.34
Active ActiveDocument.Shapes(n).PictureFormat.ColorType = msoPictureGrayscale
ActiveDocument.Shapes(n).ConvertToInlineShape
Next n

Так что ответил сам себе:)

PS Писал с экрана (макрос на одном компе, инет на другом), так что мог и ошибиться
Последний раз редактировалось Beerukoff 04.10.2006 (Ср) 14:55, всего редактировалось 2 раз(а).

Beerukoff
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 10.06.2004 (Чт) 16:31

Сообщение Beerukoff » 04.10.2006 (Ср) 14:50

Блин, первый шаг отрабатывает нормально, а на втором ругается, что индекс выходит за допустимые пределы:( Что делать?

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 04.10.2006 (Ср) 15:10

естественно выходит
на втором шаге ActiveDocument.Shapes(2) не существует
подписи нет и не будет

Beerukoff
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 10.06.2004 (Чт) 16:31

Сообщение Beerukoff » 04.10.2006 (Ср) 15:16

Написал другой текст, вроде работает на всех картинках:

For Each hLink in ActiveDocument.Hyperlinks
hLink.Delete
Next hLink

For Each Picture in ActiveDocument.InlineShapes
Picture.Height = 170.34
Picture.Width = 226.75
Picture.PictureFormat.ColorType = msoPictureGrayscale
Next Picture


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 107

    TopList