27 мар. 2014 г.

Создание визитки средствами VBA

В этом уроке я попробую объяснить, как с помощью встроенного в CorelDRAW языка программирования Visual Basiс for Application (VBA), быстро создать серию однотипных визиток (например для директора, бухгалтера, менеджеров). Главной целью буду считать не дизайнерские изыски (это отведу на творчество читателя - для самостоятельного выполнения), а принципы работы с редактором VBA и написание кода (причем я не считаю себя сколько-нибудь программистом, скорее всего "оптимизатором рутинных процессов"). Программы написанные на VBA для CorelDRAW называются макросами (как и в MS Office).
1. Для начала создадим файл, где будут храниться "материалы" относящиеся к нашему макросу. В папке, где установлен CorelDraw, есть папка GMS (у меня путь такой c:\APPS\COREL10\Draw\GMS\) создайте файл visitka.gms (НЕОБХОДИМО чтоб CorelDRAW был закрыт)
2. Откроем CorelDRAW (буду использовать 10 версию программы) и запускаем редактор Visual Basic Editor нажатием Alt+F11 или Tools/Visual Basic/Visual Basic Editor. В списке проектов мы видим созданный ранее прект visitka.gms
3. Наш проект будет состоять из кода и формы. Создадим их. Заходим в меню Insert/Module (создали модуль в котором и будем писать код нашего макроса), затем Insert/UserForm
Добавилась форма и заодно появились инструменты для работы с нею.

4. Наша визитка будет иметь следующие элементы:
Логотип 
Фамилия 
Имя 
Отчество 
Должность 
Телефоны
Создадим на форме текстовые поля для ввода этих элементов используем инструмент Textbox (прописные буквы ab| на панели Toolbox), подпишем эти поля, используя инструмент Label (заглавная буква А на панели Toolbox), добавим две кнопки "Создать визитку" и "Выход" (инструмент CommandButton).
Одиночный щелчок на элементе формы позволяет изменять содержимое этого элемента (надпись на кнопке, содержимое текстового поля и пр.), для удобства отладки заполните все поля какими-то фразами, чтобы видеть результат своей работы (ведь не всегда все делается правильно с первого раза, и прежде чем вы добьетесь необходимого - придется попотеть и помучиться, а вводить каждый раз текст немного утомительно). Кроме этого давайте зададим имя самой формы - выделите форму, щелкнув по строке заголовка и перейдите в строку Caption панели свойств формы и введите там "Создание визитки". У вас должно получиться примерно следующее:
5. Теперь добавим код программы. Он будет состоять из двух частей: код, выполняемый непосредственно после запуска макроса и код, выполняемый при нажатии на элементы управления формы (у нас это две кнопки, а в общем случае это могут быть различные выпадающие списки, радиокнопки, чекбоксы и пр.). Напишем первую часть кода (ибо она самая простая, в данном случае). Щелкните по Module1 в окне проектов и откроется редактор, где введем следующее
sub visitks()
userform1.show
end sub

Заметьте, что когда вы поставите точку после userform1, то выпадет контекстное меню в котором доступны все свойства и методы для работы с формой, нужную команду можно выбрать из этого меню, а можно продолжать набор с клавиатуры.
6. Перейдем опять на нашу форму и запрограммируем реакцию кнопки "Создание визитки" на нажатие. Дважды щелкните по ней и в открывшемся окне введите следующее:

Private Sub CommandButton1_Click() 
Dim logo As Shape

'Создание чистой страницы 
Create.ActivePage.Activate 

'Размеры рабочей области 
ActivePage.SizeHeight = 50 / 25.4 
ActivePage.SizeWidth = 90 / 25.4 

'Создание прямоугольника по размеру страницы 
ActiveLayer.CreateRectangle 0, 0, 90 / 25.4, 50 / 25.4 

'создание синий плашки в подвале визитки 
Set rect1 = ActiveLayer.CreateRectangle(0, 0, 90 / 25.4, 12 / 25.4) 
rect1.Fill.UniformColor.CMYKAssign 100, 50, 0, 0 

'создание и форматирование ФИО 
Set FIO = ActiveLayer.CreateArtisticText(90 / 50.8, 60 / 50.8, TextBox1) 
With FIO 
.Text.FontProperties.Name = "DejaVu Sans" 
.Text.FontProperties.Style = cdrBoldFontStyle 
.Text.FontProperties.Size = 10 
.Text.AlignProperties.Alignment = cdrCenterAlignment 
.Fill.UniformColor.CMYKAssign 100, 50, 0, 0 
End With 

'создание и форматирование должности 
Set job = ActiveLayer.CreateArtisticText(90 / 50.8, 50 / 50.8, TextBox2) 
With job 
.Text.FontProperties.Name = "Arial" 
.Text.FontProperties.Style = cdrNormalFontStyle 
.Text.FontProperties.Size = 8 
.Text.AlignProperties.Alignment = cdrCenterAlignment 
.Fill.UniformColor.CMYKAssign 0, 100, 100, 0 
End With 

'создание и форматирование телефона 
Set tel = ActiveLayer.CreateArtisticText(90 / 50.8, 10 / 50.8, TextBox3) 
With tel 
.Text.FontProperties.Name = "Pragmatica BlackC"
 .Text.FontProperties.Style = cdrItalicFontStyle 
.Text.FontProperties.Size = 9 
.Text.AlignProperties.Alignment = cdrCenterAlignment 
.Fill.UniformColor.CMYKAssign 0, 0, 0, 0 
End With 

'импорт логотипа, определение размеров и его местоположение 
ActiveLayer.Import TextBox4, , False 
Set logo = ActiveSelection 
logo.SizeHeight = 8.8 / 25.4
logo.SizeWidth = 13 / 25.4 
logo.PositionX = 37 / 25.4 
logo.PositionY = 47 / 25.4 
End Sub

Строчки в начале которых стоит знак " ' " (апостроф) - это комментарии, служащие для облегчения понимания работы программы, и компилятором игнорируются.
7. Аналогично запрограммируем кнопку "Выход", дважды щелкнув по ней, и введем текст:

Private Sub CommandButton2_Click() 
Unload UserForm1 
End Sub

8. Теперь настал момент запустить нашу программу на исполнение. Для этого зайдите в меню Run и выберете пункт Run Sun/Userform или нажмите кнопку с треугольничком на панели инструментов.
9. Перейдите в программу CorelDRAW и посмотрите на результат работы.

При необходимости подкорректируйте работу программы (возможно при наборе вы допустили синтаксические ошибки) или измените параметры форматирования текста, если предложенный мною вариант вас не устраивает. Если есть необходимость, то добавьте на форму дополнительные поля (например второй телефон или e-mail). Наверняка вам придется указать иной путь к логотипу.
10. Если вы довольны, работой программы, то осталось подготовить её для дальнейшего использования в программе CorelDraw. При необходимости очистите текстовые поля заполненные в п.4. Закройте Visual Basic Editor и перейдите в CorelDraw. Зайдите в пункт Option/Customization, там перейдите в меню Commands и в выпадающем списке выберете Macros

В появившемся списке найдите свою программу, и перетащите её на панель инструментов и нажмите OK.
Вот и все. При нажатии на эту кнопку, на экран будет выводиться написанная программа. Надеюсь это позволит вам немного облегчить ваш рабочий процесс.

Писал для сайта http://arttower.ru  
Ноябрь 2008 год

Комментариев нет:

Отправить комментарий