|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.09.2013, 21:53 | #1 |
Новичок
Джуниор
Регистрация: 17.09.2013
Сообщений: 4
|
Макрос Word. Обработка рисунков
Привет всем.Для обработки в ворде рисунка макросом (изменить ширину, обтекание и т.д) необходимо чтобы этот рисунок обладал свойством Shapes, для этого необходимо выполнить .InlineShapes(1).ConvertToShape. Рисунок в ворде, имеющий обтекание тестов «в тексте», имеет свойство InlineShapes(1) и после конвертации никаких проблем нет, его можно обрабатывать макросом. Но когда тот же рисунок имеет обтекание текстом «за текстом», то при использовании InlineShapes(1) пишет, что номер такого семейства не существует (ошибка 5941) и ничего с ним не сделать. Вопрос в следующем, есть ли семейство InlineShapes для данного типа рисунков, или как-нибудь другим способом избавиться от этой проблемы.
|
18.09.2013, 03:09 | #2 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Вы смешали мух и котлеты. Если рисунок "за текстом", то он никак не может входить в коллекцию InlineShapes, он находится в коллекции ShapeRange.
У вас, как мне кажется, неправильное представление о том, что такое InlineShapes и Shapes. InlineShapes — это коллекция содержащая все рисунки, имеющие обтекание "в тексте". (InlineShapes можно перевести как "фигуры, вписанные в строку"). Например, Selection.InlineShapes содержит все рисунки с обтеканием "в тексте", находящиеся в выделенном фрагменте. Shapes содержит рисунки, у которых обтекание не "в тексте". Приложите документ и опишите подробнее, что у вас не получается
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 18.09.2013 в 03:11. |
18.09.2013, 18:02 | #3 |
Новичок
Джуниор
Регистрация: 17.09.2013
Сообщений: 4
|
Dim selPic As Object
Set selPic = ActiveDocument.InlineShapes(1) selPic.Select With Selection .InlineShapes(1).ConvertToShape .ShapeRange.WrapFormat.Type = 3 Selection.ShapeRange.ZOrder 5 Selection.ShapeRange.IncrementLeft MillimetersToPoints(30) End With вот собственно часть кода программы, которым я обрабатывал рисунке "в тексте", все получалось. После мне надо для тех же рисунков применить другое обтекание. Я видел, что inlineshapes используется для рисунков в тектсе и предположил что по сути нужно поменять в двух местах: Set selPic = ActiveDocument.Shapes и удалить InlineShapes(1).ConvertToShape, так как уже является shape. Dim selPic As Object Set selPic = ActiveDocument.Shapes selPic.Select With Selection .ShapeRange.WrapFormat.Type = 3 Selection.ShapeRange.ZOrder 4 Selection.ShapeRange.IncrementLeft MillimetersToPoints(30) End With Но для полученного кода выдаётся ошибка, что не объект не поддерживает этот метод. Где я ошибся? |
18.09.2013, 23:58 | #4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Позволю себе прокомментировать ваш код:
Код:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
19.09.2013, 17:11 | #5 |
Новичок
Джуниор
Регистрация: 17.09.2013
Сообщений: 4
|
Всё, заработало Спасибо большое, очень выручили
|
19.06.2018, 15:31 | #6 | |
Новичок
Джуниор
Регистрация: 24.12.2017
Сообщений: 2
|
Добрый день. Подскажите пожалуйста как с помощью макроса не только вставить изображение из буфера, но и поменять ему обтекание на "перед текстом" и выставить определенные размеры. Часто приходится копировать картинки из интернета и вставлять в ворд. И каждый раз приходится все в ручную делать.
Макрорекордер дает записать только первое действо, вставку. После работать не хочет. Запись включается, но с рисунком ничего сделать не могу. Цитата:
|
|
09.01.2019, 04:53 | #7 | |
Новичок
Джуниор
Регистрация: 09.01.2019
Сообщений: 1
|
Цитата:
Нашёл очень полезным ваш переделанный код, но возник один вопрос, который не знаю, как решить. Допустим, что в переменную надо записать не все рисунки в документе, а все рисунки в выделенном его фрагменте. Для этого вместо ActiveDocument.Shapes я пишу Selection.Shapes. Но в таком случае свойства внутри With применяются только к первому рисунку в выделении. Можно ли изменить код так, чтобы они применялись ко всем рисункам в выделенном фрагменте документа? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
макрос в word | meg8639 | Microsoft Office Excel | 6 | 01.10.2011 17:37 |
Макрос в MO Word | auqarius | Помощь студентам | 0 | 11.04.2011 22:50 |
Сохранение рисунков Word в файл | viter.alex | Microsoft Office Word | 5 | 08.06.2010 21:43 |
Нумерация рисунков и таблиц в Word | coolsolver | Microsoft Office Word | 1 | 18.09.2007 09:27 |
Макрос в Word | Mictiann | Microsoft Office Word | 1 | 12.09.2007 09:35 |