* Записване на макроси – пример с Word
Публикувано на 27 септември 2015 в раздел Макроси VBA.
Сега ще покажем пример за запис на макрос в Microsoft Word. Ще запишем глобален шаблон за заявления до Ректора на университета. При натискане на "Record macro" бутона ще се появи следния диалогов прозорец:
Името на макроса е "zaiavlenie_do_rektora". Имате две възможности за запазване - в "Document1" (това е новия документ, който сме отворили) или "All Documents", т.е. глобално за всички документи в Word. Ще изберем "All Documents", защото искаме да направим шаблон, който да бъде използван в бъдеще при създаването на нови документи. Ако искате този макрос да се активира с натискане на клавишна комбинация изберете Keyboard, а ако искате да се активира с бутон - Button. В случая няма да правим това, а при нужда от неговото използваме ще стартираме макроса ръчно. Затова просто натискаме OK.
След като записването започне, изготвяме нашия документ по съвсем нормалния и познат за нас начин. За нашия пример сме подготвили следния шаблон:
Специално отбелязваме, че датата е вмъкната чрез "Insert > Date and Time", а не е писана ръчно. Целта ни е при добавяне на нов документ и изпълняване на макроса да може датата да е автоматично текущата на машината.
Нека видим генерирания програмен код. Отидете на "View > Macros > View Macros". В диалоговия прозорец изберете макроса, който записахте, и натиснете Edit за редакция. Ще се отвори познатия ви вече VBA редактор и ще видите, че вашия макрос е записан при модулите в раздел "Normal" (общия шаблон за документи на Word). Вероятно ще ви направи впечатление, че кода може да е много дълъг. Специално при форматирането на текст в Word понякога се получават голямо количество действия, които се припокриват едно-друго. Например при правене на Line Ident ние дърпаме малкото триъгълниче с мишката - ще забележите, че всяка стъпка от преместването е записана отделно, а реално полезната команда ще е само последната:
Можете да изчистите кода, като премахнете ненужните припокривания и оставите само крайната команда. Такива проблеми ще се появят и ако по време на записването на макроса ние направим грешка, след което я поправим и т.н. - всичко ще бъде записано като последователност от действия. Разбира се това не е проблем, но "почистването на кода" все пак е препоръчително, особено ако той в бъдеще би бил преизползван и надграждан. Така например след несложна редакция кодът от записания пример е следния:
Sub zaiavlenie_do_rektora() ' ' zaiavlenie_do_rektora Macro ' ' ' Сменя шрифта на Times New Roman размер 14 Selection.Font.Name = "Times New Roman" Selection.Font.Size = 14 ' Това е кода за писане на БДС кирилица ' генерирано е при натискане на Alt + Shift за смяна на език Application.Keyboard (1026) ' Изписва текст на екрана Selection.TypeText Text:="ДО РЕКТОРА" ' Прави форматирането да е подравнено вдясно Selection.ParagraphFormat.Alignment = wdAlignParagraphRight ' Натиснали сме Enter - това е нов параграф Selection.TypeParagraph ' Отново изписваме текст Selection.TypeText Text:= _ "на Софийски Университет ""Св. Климент Охридски""" ' Два нови реда Selection.TypeParagraph Selection.TypeParagraph ' Центрираме текста и сменяме големината на шрифта и т.н. Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter Selection.Font.Size = 28 Selection.TypeText Text:="ЗАЯВЛЕНИЕ" Selection.TypeParagraph Selection.Font.Size = 14 Selection.TypeText Text:= _ "от ........................................................." Selection.TypeText Text:= _ "............................................................" ' Правим шрифта наклонен за пояснението име, презиме и фамилия Selection.Font.Italic = wdToggle Selection.TypeText Text:="..........." & Chr(11) & _ "/ име, презиме, фамилия /" ' Отново два нови реда, след което подравняваме вляво Selection.TypeParagraph Selection.TypeParagraph Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft ' Натискаме отново бутона за наклонен текст, с което го изключваме Selection.Font.Italic = wdToggle ' Изтегляме триъгълничето в ruler ' за да започне първата дума по-навътре With Selection.ParagraphFormat .SpaceBeforeAuto = False .SpaceAfterAuto = False .FirstLineIndent = CentimetersToPoints(1) End With Selection.TypeText Text:="Уважаеми г-н Ректор," Selection.TypeParagraph Selection.TypeText Text:= _ "Моля, ........................................................" Selection.TypeParagraph Selection.TypeParagraph Selection.TypeParagraph ' Връщаме line ident в оригиналната позиция With Selection.ParagraphFormat .SpaceBeforeAuto = False .SpaceAfterAuto = False .FirstLineIndent = CentimetersToPoints(0) End With Selection.TypeText Text:="Дата: " ' Вкарали сме датата от меню Insert > Date and Time Selection.InsertDateTime DateTimeFormat:="d.M.yyyy 'г.'", InsertAsField:= _ False, DateLanguage:=wdBulgarian, CalendarType:=wdCalendarWestern, _ InsertAsFullWidth:=False ' Натиснали сме многократно бутон TAB на клавиатурата Selection.TypeText Text:=vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & _ vbTab & "Подпис: .........................." Selection.TypeParagraph Selection.TypeText Text:=vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & _ vbTab & vbTab & vbTab & vbTab & "/ ......................... /" End Sub
Допълнително сме поставили коментари при всеки оператор, за да обясним действията им набързо.
Вече сме готови да използваме нашия макрос. Просто отворете нов документ в Word и отидете на View > Macros, изберете вашия макрос и натиснете бутон Run. Това е, шаблона автоматично ще се появи на екрана.
Добави коментар