* Записване на макроси – пример с 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. Това е, шаблона автоматично ще се появи на екрана.


Добави коментар