Автор RuR, 03 апреля 2020, 16:42
Для выделения всех рисунков (картинок) типа «Shape» я использую это:
ActiveDocument.Shapes.SelectAll
Как выделить все рисунки типа «InlineShape»?
Я выделяю все рисунки, чтобы затем в программе «Word» (вручную, без макроса) их оформить.
Администратор
- Administrator
- Сообщения: 2,254
- Записан
В VBA нет инструмента для одновременного выделения всех рисунков типа «InlineShape», можно выделить только один рисунок.
Но можно двигаться по всем рисункам и можно обрабатывать каждый рисунок отдельно.
Но некоторые действия, какие юзер может делать в ворде, нельзя сделать в VBA. Поэтому заранее не известно, возможно ли применить к рисунку нужное оформление с помощью VBA.
Sub Макрос()
Dim рис As InlineShape
‘ Движение по всем рисункам с типом «InlineShape».
For Each рис In ActiveDocument.InlineShapes
‘ Отображение высоты рисунка в окне View — Immediate Window.
Debug.Print рис.Height
Next рис
End Sub
Есть методы:
ConvertToInlineShape
ConvertToShape
Возможен ли перевод из InlineShape в Shape, выделение всех картинок с помощью ActiveDocument.Shapes.SelectAll, форматирование вручную, обратный перевод в InlineShape?
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Вот так можно перевести все рисунки типа «InlineShape» в рисунки типа «Shape»:
Макрос
Sub Макрос()
Dim i As Long
‘ Движение по всем рисункам с типом «InlineShape» от последнего к первому.
‘ От первого к последнему не двигаемся, т.к. будет сбиваться
‘ порядковая нумерация рисунков типа «InlineShape».
‘ Т.к. после превращения рисунка типа «InlineShape» в «Shape»
‘ исчезнет рисунок типа «InlineShape».
For i = ActiveDocument.InlineShapes.Count To 1 Step -1
ActiveDocument.InlineShapes(i).ConvertToShape
Next i
End Sub
[свернуть]
Вот так можно перевести все рисунки типа «Shape» в рисунки типа «InlineShape»:
Макрос
Sub Макрос()
Dim i As Long
‘ Движение по всем рисункам с типом «Shape» от последнего к первому.
‘ От первого к последнему не двигаемся, т.к. будет сбиваться
‘ порядковая нумерация рисунков типа «Shape».
‘ Т.к. после превращения рисунка типа «Shape» в «InlineShape»
‘ исчезнет рисунок типа «Shape».
For i = ActiveDocument.Shapes.Count To 1 Step -1
ActiveDocument.Shapes(i).ConvertToInlineShape
Next i
End Sub
[свернуть]
После превращения картинок типа «InlineShape» в картинки типа «Shape», все картинки документа оказываются на первом листе друг на друге в куче.
Администратор
- Administrator
- Сообщения: 2,254
- Записан
Не обращайте на это внимание. Выделите рисунки, примените оформление и снова превратите их в InlineShape.
Спасибо, теперь все заработало!
- Форум по VBA, Excel и Word
-
►
Word -
►
Макросы в Word -
►
Word VBA Макросы: Как выделить все рисунки (объекты) типа «InlineShape»?
Всем привет.
Потребовалось выделить все картинки в очень большом файле Word, чтобы центровать их и поместить в рамку. Хочу просто выделить все картинки скриптом.
VBA не пользовался ранее.
Нашел вроде текст скрипта, но выдает ошибку.
Word 2007.
Выполняю следующую последовательность действий:
С помощью комбинации Alt+F11, Ctrl+G Перехожу в Visual basic в поле Immediate и пишут код
Visual Basic | ||
|
Нажимаю Enter — выдает ошибку Compile error: Invalid in Immediate pane
Что не так? Какие то проблемы при выделении, нужно что-то установить, код некоррктный?
Заранее спасибо всем за помощь.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Выделить макросом несколько рисунков
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 4 ]
1 28.09.2017 06:50:46
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Тема: Выделить макросом несколько рисунков
В файле Word имеется несколько рисунков в формате обтекание «перед текстом». Нужно выделить совместно рисунки с определенными номерами (например, 1, 3, 4, 7) и сдвинуть их.
Данный макрос выделяет только один рисунок с номером 1:
Sub Pict1()
Dim selPic As Object
'В переменную selPic записываем все рисунки документа, находящиеся не в тексте.
Set selPic = ActiveDocument.Shapes
'Выделяется рисунок с номером 1.
selPic(1).Select
'Рисунки нужно сдвинуть.
Selection.ShapeRange.IncrementLeft 0.65
Selection.ShapeRange.IncrementLeft 0.65
End Sub
Как выделить несколько рисунков с определенными номерами?
Их, вероятно, нужно включить в переменную selPic. Как это сделать?
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
2 Ответ от Alex_Gur 28.09.2017 07:15:37
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Выделить макросом несколько рисунков
Спасибо. Нашел приемлемое решение в внешняя ссылка
Sub SelectShapeRange()
ActiveDocument.Shapes.Range(Array(1, 3, 4, 7)).Select
Selection.ShapeRange.IncrementLeft 0.65
Selection.ShapeRange.IncrementLeft 0.65
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
3 Ответ от Alex_Gur 28.09.2017 07:35:46
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Выделить макросом несколько рисунков
Еще вопрос в связи с этим.
Пусть выделен некоторый рисунок в формате обтекание «перед текстом».
Как узнать его номер в коллекции Shapes?
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
4 Ответ от Fck_This 28.09.2017 13:19:24
- Fck_This
- генерал-полковник
- Неактивен
- Откуда: Минск, Беларусь
- Зарегистрирован: 13.07.2016
- Сообщений: 648
- Поблагодарили: 97
Re: Выделить макросом несколько рисунков
Alex_Gur пишет:
Еще вопрос в связи с этим.
Пусть выделен некоторый рисунок в формате обтекание «перед текстом».
Как узнать его номер в коллекции Shapes?
Никогда не обращался к фигурам через VBA, но чисто логически у shapes в совокупности есть count и каждому shapes соответствует определённый ID. Если по порядку спрашивать их ID через For i = 1 To … .Count, то i будет номером.
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871
Сообщений [ 4 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Как выделить объекты?
- Как выделить картинку из Shape?
- Как выделить все перекрестные ссылки?
- Выделить текст, но не печатать выделение
- Не выделить постоянную часть гиперссылки
- Найти и выделить текст цветом
- Выделить все вхождения стиля с заданным именем
- Как выделить все абзацы начинающиеся с определенного символа ?
Содержание
- Excel как выделить все картинки на листе
- Как изменить сразу все картинки на листе
- Удаление всех объектов на листе в Excel
- Удаление картинок и объектов в Excel средствами программы
- Удаление картинок и объектов в Excel с помощью макроса VBA
- VBA Excel. Работа с фигурами (Shapes)
- Объекты для работы с фигурами
- Создание фигур в VBA Excel
- Синтаксис метода AddShape
- Параметры метода AddShape
- Константы MsoAutoShapeType
- Создание объекта ShapeRange
- Vba excel выделить все рисунки
- Как легко выделить все объекты (картинки и диаграммы) в Excel?
- Легко вставляйте несколько картинок / изображений в ячейки в Excel
- Выделить макросом несколько рисунков
- Сообщений [ 4 ]
- 1 Тема от Alex_Gur 28.09.2017 06:50:46
- Тема: Выделить макросом несколько рисунков
- 2 Ответ от Alex_Gur 28.09.2017 07:15:37
- Re: Выделить макросом несколько рисунков
- 3 Ответ от Alex_Gur 28.09.2017 07:35:46
- Re: Выделить макросом несколько рисунков
- 4 Ответ от Fck_This 28.09.2017 13:19:24
- Re: Выделить макросом несколько рисунков
Excel как выделить все картинки на листе
Как изменить сразу все картинки на листе
Если вы хотите изменить сразу все картинки, ранее вставленные на лист, надо сначала их все выделить.
После того, как вы выделили все картинки, вы можете их
- удалить, нажав клавишу Delete
- масштабировать, потянув мышом за угол любой картинки
- перетащить в любую сторону сразу все картинки
- изменить в свойствах картинки режим привязки к ячейкам, чтобы можно было сортировать / фильтровать таблицу с картинками
- поменять любые другие свойства изображений, воспользовавшись инструментами Excel на ленте на вкладке Работа с рисунками
Для выделения всех картинок:
- выделяем одну любую картинку
(если картинке назначена гиперссылка, то удерживайте клавишу Ctrl для выделения) - Нажимаем Ctrl + A для выделения всех картинок на листе
Второй вариант, как выделить все картинки:
- Нажимаем Ctrl + G
Появится диалоговое окно Переход, а в нём снизу — кнопка Выделить - Нажимаем кнопку Выделить, выбираем опцию «Объекты», жмём ОК
Удаление всех объектов на листе в Excel
При копировании на рабочий лист Excel информации со страницы из сети Интренет периодически помимо текста вставляются ненужные картинки и различные элементы управления (кнопки, флажки и т.д.). Если их количество значительное, то удалять «вручную» окажется трудоемким процессом.
Имеется несколько способов решить данную проблему: средствами программы Excel и с помощью макроса VBA.
Удаление картинок и объектов в Excel средствами программы
В результате вставки данных со страницы Интернет-сайта скопировались ненужные картинки и элементы управления:
Чтобы удалить ненужные объекты, сначала необходимо выделить эти элементы, для этого перейдите в меню «Главная» -> «Редактирование» -> «Найти и выделить«-> «Выделение группы ячеек» (можно также кликнуть клавишу F5, а затем нажать кнопку «Выделить. «).
В открывшемся окне необходимо выбрать пункт «Объекты» и кликнуть «OK«:
В результате Excel выделит все требуемые объекты (если необходимо какие то элементы оставить, то необходимо зажать клавишу Ctrl и левой кнопкой мыши кликнуть на необходимые элементы, для снятия выделения):
Теперь осталось только нажать клавишу Delete, чтобы удалить все выделенные объекты.
Удаление картинок и объектов в Excel с помощью макроса VBA
Указанную выше проблему можно решить, написав в редакторе Visual Basic следующий макрос:
Если же необходимо удалить только картинки, тогда макрос необходимо изменить на:
Можно дополнить макрос еще одной полезной функцией — удаление гиперссылок:
Объединив два действия в одну функцию DeleteObjects будут удалены все объекты и ссылки:
В результате выполнения макроса на листе будут удалены все объекты, а гиперссылки заменятся на обычный текст.
Источник
VBA Excel. Работа с фигурами (Shapes)
Работа с фигурами в VBA Excel: создание фигур методом Shapes.AddShape, типы фигур (MsoAutoShapeType), обращение к фигурам и изменение их свойств. Примеры.
Объекты для работы с фигурами
Фигуры в VBA Excel представлены тремя объектами:
Объект | Описание |
---|---|
Shapes | Коллекция всех фигур на рабочем листе. Используется для создания новых фигур, для обращения к одной фигуре по имени и для перебора фигур циклом. |
ShapeRange | Коллекция нескольких фигур, аргументом которой является массив имен выбранных объектов. Используется для редактирования сразу всех фигур, входящих в эту коллекцию. |
Shape | Объект, представляющий одну фигуру. Используется для редактирования одной этой фигуры. |
Создание фигур в VBA Excel
Фигуры в VBA Excel создаются методом Shapes.AddShape.
Синтаксис метода AddShape
Shapes — выражение, возвращающее коллекцию фигур на рабочем листе, например: ActiveSheet.Shapes.
Параметры метода AddShape
Параметр | Описание |
---|---|
Type | Константа из коллекции MsoAutoShapeType, определяющая тип создаваемой фигуры. |
Left | Расстояние от левой границы фигуры до левой границы табличной части рабочего листа в пунктах.. Тип данных — Single. |
Top | Расстояние от верхней границы фигуры до верхней границы табличной части рабочего листа в пунктах.. Тип данных — Single. |
Width | Ширина фигуры по внешним границам в пунктах. |
Height | Высота фигуры по внешним границам в пунктах. |
Все параметры метода Shapes.AddShape являются обязательными.
Константы MsoAutoShapeType
Константы коллекции MsoAutoShapeType, определяющие основные типы создаваемых фигур:
Константа | Значение | Тип фигуры |
---|---|---|
msoShapeRectangle | 1 | Прямоугольник |
msoShapeParallelogram | 2 | Параллелограмм |
msoShapeTrapezoid | 3 | Трапеция |
msoShapeDiamond | 4 | Ромб |
msoShapeRoundedRectangle | 5 | Прямоугольник: скругленные углы |
msoShapeOctagon | 6 | Восьмиугольник (октаэдр) |
msoShapeIsoscelesTriangle | 7 | Равнобедренный треугольник |
msoShapeRightTriangle | 8 | Прямоугольный треугольник |
msoShapeOval | 9 | Овал |
msoShapeHexagon | 10 | Шестиугольник (гексаэдр) |
msoShapeCross | 11 | Крест |
msoShapeRegularPentagon | 12 | Пятиугольник (пентаэдр) |
msoShapeCan | 13 | Цилиндр |
msoShapeCube | 14 | Куб |
msoShapeDonut | 18 | Круг: прозрачная заливка (кольцо) |
msoShapeLightningBolt | 22 | Молния |
msoShapeSun | 23 | Солнце |
msoShapeMoon | 24 | Месяц (луна) |
msoShape5pointStar | 92 | Звезда: 5 точек (пятиконечная) |
msoShapeCloud | 179 | Облако |
Все доступные константы из коллекции MsoAutoShapeType смотрите на сайте разработчиков.
Создание объекта ShapeRange
Создание коллекции ShapeRange из выбранных фигур:
Источник
Vba excel выделить все рисунки
Как легко выделить все объекты (картинки и диаграммы) в Excel?
Как выбрать все объекты, например все изображения и все диаграммы? В этой статье представлены сложные способы выбора всех объектов, выделения всех изображений и простого выбора всех диаграмм на активном листе в Excel.
Вы можете применить Перейти к команда, чтобы легко выбрать все объекты. Вы можете сделать это, выполнив следующие действия:
Шаг 1: нажмите F5 , чтобы открыть Перейти к диалоговое окно.
Шаг 2: нажмите Особый в нижней части, чтобы открыть Перейти к Специальное диалоговое окно.
Шаг 3: в Перейти к специальному диалоговое окно, проверьте Объекты опцию.
Шаг 4: нажмите OK. Затем он выбирает все типы объектов на активном листе, включая все изображения, все диаграммы, все формы и т. Д.
Легко вставляйте несколько картинок / изображений в ячейки в Excel
Обычно изображения вставляются над ячейками в Excel. Но Kutools для Excel Импорт изображений Утилита может помочь пользователям Excel пакетно вставлять каждое изображение / изображение в одну ячейку, как показано ниже.
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now
Кажется, нелегкий способ выбрать все изображения, кроме ручного выбора каждого из них. Фактически, макрос VB может помочь вам быстро выбрать все изображения на активном листе.
Шаг 1: Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
Шаг 2: нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.
VBA: выбрать все изображения на активном листе
Шаг 3: нажмите F5 ключ для запуска этого макроса. Затем он сразу выбирает все изображения на активном листе.
Макрос VB также может помочь вам выбрать все диаграммы на активном листе.
Шаг 1: Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
Шаг 2: нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.
VBA: выбрать все диаграммы на активном листе
Шаг 3: нажмите F5 ключ для запуска этого макроса. Этот макрос будет выбирать все виды диаграмм на активном листе в мгновение ока.
Иногда вам может потребоваться удалить все изображения, диаграммы или фигуры из текущего листа, текущей книги или указанных листов. Вы можете применить утилиту Kutools for Excel для удаления иллюстраций и объектов, чтобы легко ее заархивировать.
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now
1. Нажмите Кутулс > Удалить > Удалить иллюстрации и объекты.
2. В открывшемся диалоговом окне вам необходимо:
(1) В Удалить В разделе укажите типы объектов, которые вы хотите удалить.
В нашем случае мы хотим удалить диаграммы и изображения, поэтому мы проверяем опцию Charts и опцию Pictures.
(2) В Заглянуть раздел, укажите область удаления.
В нашем случае мы хотим удалить диаграммы и изображения с нескольких указанных листов, поэтому мы проверяем Избранные листы вариант, а затем отметьте указанный лист в правом поле. Смотрите левый снимок экрана:
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now
3. Нажмите Ok кнопку.
Затем все диаграммы и изображения удаляются с указанных рабочих листов.
Источник
Выделить макросом несколько рисунков
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 4 ]
1 Тема от Alex_Gur 28.09.2017 06:50:46
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Тема: Выделить макросом несколько рисунков
В файле Word имеется несколько рисунков в формате обтекание «перед текстом». Нужно выделить совместно рисунки с определенными номерами (например, 1, 3, 4, 7) и сдвинуть их.
Данный макрос выделяет только один рисунок с номером 1:
Как выделить несколько рисунков с определенными номерами?
Их, вероятно, нужно включить в переменную selPic. Как это сделать?
2 Ответ от Alex_Gur 28.09.2017 07:15:37
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Выделить макросом несколько рисунков
Спасибо. Нашел приемлемое решение в внешняя ссылка
3 Ответ от Alex_Gur 28.09.2017 07:35:46
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Re: Выделить макросом несколько рисунков
Еще вопрос в связи с этим.
Пусть выделен некоторый рисунок в формате обтекание «перед текстом».
Как узнать его номер в коллекции Shapes?
4 Ответ от Fck_This 28.09.2017 13:19:24
- Fck_This
- генерал-полковник
- Неактивен
- Откуда: Минск, Беларусь
- Зарегистрирован: 13.07.2016
- Сообщений: 648
- Поблагодарили: 97
Re: Выделить макросом несколько рисунков
Еще вопрос в связи с этим.
Пусть выделен некоторый рисунок в формате обтекание «перед текстом».
Как узнать его номер в коллекции Shapes?
Никогда не обращался к фигурам через VBA, но чисто логически у shapes в совокупности есть count и каждому shapes соответствует определённый ID. Если по порядку спрашивать их ID через For i = 1 To . .Count, то i будет номером.
Источник