RU
EN

Справка по Woodman Docker

Массовые действия с объектами в VBA

на примере относительного изменения размера

Для начинающих свой путь в автоматизации процессов в CorelDRAW возникает множество вопросов. Особенно актуальна задача, когда одно и то же действие нужно повторить для каждого отдельного объекта. Как изменить размер сразу у всех выбранных объектов? Как прибавить несколько миллиметров к ширине каждого объекта? Как одновременно изменить ширину и высоту всех объектов, сохранив их обработку по отдельности? И как вообще перебрать все выделенные объекты один за другим с помощью VBA?

На этом простом примере разберём базовый принцип обработки объектов в CorelDRAW с помощью VBA-макроса.

Я написал две функции VBA для CorelDRAW, которые делают практически одно и то же: изменяют размер каждого выбранного объекта сразу на +5 мм по ширине и -7 мм по высоте.

Простой вариант

Первый вариант — простой. Он работает, но не имеет никакой защиты от ошибок.

Sub resize_nocorrect()

	For Each s In ActiveSelectionRange.Shapes
		s.SetSize s.SizeWidth + 5, s.SizeHeight - 7
	Next s
	
End Sub

Более надёжный подход

Второй вариант — более надёжный:

Sub resize_good()

	Dim s As Shape
	Dim OS As ShapeRange

	WI_plus = 5
	HI_plus = -7

On Error GoTo errn

	ActiveDocument.Unit = cdrMillimeter

	Set OS = ActiveSelectionRange
	If OS.Shapes.Count > 0 Then
		ActiveDocument.BeginCommandGroup

		For Each s In OS
			s.SetSize s.SizeWidth + WI_plus, s.SizeHeight + HI_plus
		Next s
	Else
		Exit Sub
	End If

errn:
	ActiveDocument.EndCommandGroup

End Sub

Для такой простой задачи кода здесь выглядит гораздо больше, но большая его часть на самом деле не связана непосредственно с изменением размера.

Он гарантирует, что работа выполняется в миллиметрах, проверяет, есть ли что-то выделенное, объединяет всю операцию в один шаг отмены (Undo) и обеспечивает базовую обработку ошибок.

Я также использую такой подход в своей коллекции макросов для CorelDRAW.

А как вы обычно пишете небольшие макросы для CorelDRAW: оставляете их простыми или добавляете все эти дополнительные проверки?

Поддержи проект Деревяшкина и получи эксклюзивную панель макросов!
Дополнительные макросы для CorelDraw от других авторов:

Инструменты, генераторы для докера и отдельные макросы.

  • G-code генератор фрезер/плазма для корела
  • YouTube: Часть 1 Часть 2 Часть 3 VK Video: Часть 1 Часть 2 Часть 3
  • Расчет неоновых вывесок
  • Генераторы картонных коробок
  • Открываем файл из буфера
  • Макрос "Наводим порядок в макетах"
Статистика
с 23.04.2022
Пользователей
11 649
Активных
908
Нажатий
5 592 583
Подтверждение
Подтвердите значение: