C, PHP, VB, .NET

Дневникът на Филип Петров


* Записване на макроси – пример с Word

Публикувано на 27 септември 2015 в раздел Макроси VBA.

Сега ще покажем пример за запис на макрос в Microsoft Word. Ще запишем глобален шаблон за заявления до Ректора на университета. При натискане на "Record macro" бутона ще се появи следния диалогов прозорец:

 

record-macro-dialog-msword

Името на макроса е "zaiavlenie_do_rektora". Имате две възможности за запазване - в "Document1" (това е новия документ, който сме отворили) или "All Documents", т.е. глобално за всички документи в Word. Ще изберем "All Documents", защото искаме да направим шаблон, който да бъде използван в бъдеще при създаването на нови документи. Ако искате този макрос да се активира с натискане на клавишна комбинация изберете Keyboard, а ако искате да се активира с бутон - Button. В случая няма да правим това, а при нужда от неговото използваме ще стартираме макроса ръчно. Затова просто натискаме OK.

След като записването започне, изготвяме нашия документ по съвсем нормалния и познат за нас начин. За нашия пример сме подготвили следния шаблон:

example-document-msword

 

Специално отбелязваме, че датата е вмъкната чрез "Insert > Date and Time", а не е писана ръчно. Целта ни е при добавяне на нов документ и изпълняване на макроса да може датата да е автоматично текущата на машината.

Нека видим генерирания програмен код. Отидете на "View > Macros > View Macros". В диалоговия прозорец изберете макроса, който записахте, и натиснете Edit за редакция. Ще се отвори познатия ви вече VBA редактор и ще видите, че вашия макрос е записан при модулите в раздел "Normal" (общия шаблон за документи на Word). Вероятно ще ви направи впечатление, че кода може да е много дълъг. Специално при форматирането на текст в Word понякога се получават голямо количество действия, които се припокриват едно-друго. Например при правене на Line Ident ние дърпаме малкото триъгълниче с мишката - ще забележите, че всяка стъпка от преместването е записана отделно, а реално полезната команда ще е само последната:

vba-code-repetions

Можете да изчистите кода, като премахнете ненужните припокривания и оставите само крайната команда. Такива проблеми ще се появят и ако по време на записването на макроса ние направим грешка, след което я поправим и т.н. - всичко ще бъде записано като последователност от действия. Разбира се това не е проблем, но "почистването на кода" все пак е препоръчително, особено ако той в бъдеще би бил преизползван и надграждан. Така например след несложна редакция кодът от записания пример е следния:

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

 



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

Адресът на електронната поща няма да се публикува


*