VBA для CorelDRAW: координаты, размеры, копирование и получение данных из поля texbox


На прошлом уроке мы научились запускать макросы для корел, а сейчас углубимся в тему. Для начала нам надо определиться с величинами. Интересная особенность VBA – это возможность работать с различными единицами измерения. В C# или Java принято работать только с двумя два вариантами – пиксели и проценты. То есть задавать размеры и положение объектов вы можете в этих двух величинах – и этого вполне хватает.

А вот в VBA таких вариантов больше. Понятно, что так как мы работаем с изображениями, то в некоторых случаях удобно, например, задавать параметры в миллиметрах. Делается это так. При активации формы прописываем:

Private Sub UserForm_Activate()
ActiveDocument.ReferencePoint = cdrTopLeft
ActiveDocument.Unit = cdrMillimeter
End Sub
Сначала мы задаем положение начала координат – это левая верхня точка, а потом единицы измерения миллиметры. Давайте попробуем определить размеры и координаты выбранного объекта на листе. Вставим следующий код в обработчик кнопки:

Private Sub CommandButton3_Click()
Dim xObRez As Double, yObRez As Double, shirObRez As Double, visObRez As Double
Dim sr As ShapeRange, srGroup As ShapeRange
Dim s As Shape
Set sr = ActiveSelectionRange 
If sr.Count = 0 Then Exit Sub 
For Each s In sr
If s.Type = cdrGroupShape Then 
Set srGroup = s.Shapes.All 
Else
s.GetBoundingBox xObRez, yObRez, shirObRez, visObRez
End If
Next s 
MsgBox "Ширина выбранного объекта: " & shirObRez & " мм"
End Sub


Здесь мы ввели четыре переменные типа дабл, пару групп объектов, и один объект. Для чего эти сложности? В VBA нельзя так просто напрямую обратиться к активному объекту – нет такого метода. Необходимо пробегать по выбранным и брать один из них. Заносим в переменные координаты и размеры и затем выводим ширину.

Теперь попробуем скопировать выбранный объект. Это просто:

Private Sub CommandButton1_Click()
On Error GoTo Errors1
ActiveDocument.Selection.Duplicate 100, 0
GoTo Ends:
Errors1:
    MsgBox ("Необходимо выбрать объект!")
Ends:
End Sub
Обратите внимание, что надо обработать ошибку, чтобы программа корректно продолжила работу, если никакой объект не выбран. Здесь мы копируем объект влево на расстояние 100 миллиметров.

Размеры листа

Dim shirL, visL As Integer
shirL = ActivePage.SizeWidth
visL = ActivePage.SizeHeight
Значения из полей textbox

Dim intervalX As Double, intervalY As Double
intervalX = TextBox1.Text
intervalY = TextBox2.Text
Если вам требуется сделать макрос для CorelDRAW на заказ или поправить готовый, то вы всегда можете написать мне. За небольшую сумму вам будет оказана квалифицированная помощь. Я могу работать с любыми версиями CorelDRAW - 6, 7, 8, 9, 10 - вплоть до 19-й (2017). Пишите!
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, макросы, CorelDRAW, VBA




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Рецензия на книгу Бенедиктов Кирилл Эльдорадо. Золото и кокаин
Рецензия на книгу Кристофер Мур Грязная работа
Пошаговое руководство по верстке на вордпресс. Глава первая: создаем тему