Sub Макрос1()
'
' Программа для обработки документов
'
With Dialogs(wdDialogCopyFile)
Directory = ActiveDocument.Path
If.Display = 0 Then Exit Sub
papka =.Directory
End With
If Right (papka, 1) = Chr$ (34) Then papka = Mid (papka, 2, Len (papka) — 2)
metka:
Selection.WholeStory
With Selection.Font
Name = "Times New Roman"
Size = 12
Colorlndex = wdBlack
End With
With Selection.ParagraphFormat
LeftIndent = CentimetersToPoints(0)
Rightlndent = CentimetersToPoints(0)
SpaceBefore = 0
SpaceAfter = 0
LineSpacingRule = wdLineSpaceSingle
FirstLineIndent = CentimetersToPoints(1.27)
End With
Selection.Find.ClearFormatting
Selection.Find.ParagraphFormat.Alignment = wdAlignParagraphLeft
Selection.Find.Replacement.ClearFormatting
Selection. Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphJustify
With Selection.Find
Text = ""
Replacement.Text = ""
Forward = True
Wrap = wdFindContinue
Format = True
MatchCase = False
MatchWholeWord = False
MatchWildcards = False
MatchSoundsLike = False
M tchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.Save
ActiveDocument.SaveAs FileName: =papka + Left(ActiveDocument.Name, Len(ActiveDocument.Name) -4), FileFormat:=wdFormatRTF
ActiveWindow.Close
If Documents.Count > 0 Then GoTo metka signal = MsgBox ("Обработка закончена", vblnformation, "Обработка текстов")
End Sub
* * *
Весь приведенный выше подробный разбор написания первой макрокоманды помещен здесь исключительно для того, чтобы читающий эти строки мог представить себе ход рассуждений и мыслей, необходимый для создания программ, — некоторые приемы анализа программного кода и самостоятельного обучения программированию на Visual Basic for Applications. Ведь статья рассчитана не на профессиональных программистов, которые, без сомнения, знают эти приемы, а скорее на тех, кто ранее вообще не имел представления об этой отрасли человеческой деятельности.
А эти приемы таковы:
1. Для самого первого начала работы, а также для выяснения, какая команда соответствует тому или иному преобразованию текста или другому действию пользователя Office, необходимо широко использовать основное отличие редактора Visual Basic for Applications от сред разработки приложений на других языках программирования — средство записи макросов. Наличие средства записи макросов позволяет быстро и легко создать свою первую программу и начать ее изучать, а также может оказать серьезную помощь, когда необходимо "перевести" на язык Visual Basic for Applications какое-либо действие пользователя Word, Excel или PowerPoint.
2. Для грамотного написания кода, выяснения возможных продолжений каждой команды следует широко использовать контекстную подсказку Visual Basic for Applications, которая появляется при наборе точки или скобки после уже написанной части команды.
3. Справка Visual Basic for Applications — основной источник знаний по этому языку! Она построена по контекстному принципу — при вызове справки клавишей F1 отображается справка по той команде, на которой стоит в это время курсор. Таким образом можно быстро и легко изучить назначение, синтаксис и особенности каждой команды — стоит только набрать ее и вызвать справку. К сожалению, в новых версиях Microsoft Office Справочная система по VBA не переведена на русский язык (а в Microsoft Office 97 перевод затронул отнюдь не весь объем Справки), поэтому англо-русский словарь (или система машинного перевода) может стать вашим спутником на время освоения Visual Basic for Applications. Путешествия по справке и чтение различных ее разделов, даже не относящихся к непосредственно выполняемой задаче, обогатят ваши знания по программированию.
4. Примеры справки Visual Basic for Applications — работа, сделанная за Вас! Копируйте фрагменты кода из примеров себе в программу и модифицируйте их так, как Вам надо.
5. Для тестирования и отладки небольшого фрагмента кода или даже одной команды вынесите ее временно в отдельный модуль — проще будет работать.
В принципе даже этих базовых приемов хватит, чтобы начать полноценно изучать Visual Basic for Applications. Ну, а дальнейшее зависит уже от Вашего разума, логики, сообразительности и наблюдательности.
Бесспорно, "дружественность" Редактора VBA — это не что-то случайно возникшее, а плод многолетней работы программистов Microsoft и множества тестеров и пользователей. Стоит их за это поблагодарить, — освоить без дополнительных руководств какой-либо язык программирования лет 10 назад было крайне и крайне непросто.
Visual Basic for Applications — пожалуй, на настоящее время практически единственный язык, который подавляющее число людей может изучить абсолютно самостоятельно, без каких-либо дополнительных книг или текстов программ. Достаточно лишь иметь "научный взгляд на мир", то есть способность наблюдать, экспериментировать и делать выводы. Даже эта книга имеет цель не научить вас программировать на Visual Basic for Applications, а только помочь вам в этом, чтобы Вы не тратили множество времени на поиск и получение информации о не совсем очевидных вещах. Ведь, согласитесь, совсем неплохо облегчить начало работы и знакомство с возможностями редактора, немного проиллюстрировав процесс программирования.
Продолжим изучение программирования на Visual Basic for Applications. Подробные описания теперь уже не нужны — достаточно лишь заострения внимания на некоторых "подводных камнях" или скрытых возможностях.
В этой главе речь пойдет о так называемых "пользовательских формах" формально они являются "нестандартными диалоговыми окнами" программ, наподобие диалоговых окон Word, но, по сути, с их помощью можно создавать настоящие программы, подобные компилируемым программам для Windows, которые будут отличаться от них лишь тем, что для их работы необходим Microsoft Word. К сожалению, их нельзя создавать с помощью средства записи макросов, но зато все средства создания форм снабжены подробной справкой.
Как и прежде, в качестве основной среды разработки будет использоваться Microsoft Office 97, об отличиях же более старших версий Microsoft Office будет упоминаться тогда, когда это имеет значение.
Для создания формы в Редакторе VBA необходимо из контекстного меню правой кнопки мыши в Менеджере проектов выбрать "Вставить — UserForm" (рис. 6.1).
Рис. 6.1. Окно дизайна форм.
Более подробно о формах, их элементах и свойствах рассказывалось в четвертой главе книги, поэтому ограничусь кратким повторением.
Форма состоит из элементов — различных средств ввода и отображения информации (командных кнопок, мест для ввода текста, мест для вывода текста, переключателей и флажков и др.), которые могут на ней располагаться. У каждого элемента есть свойства — ширина, высота, цвет, особенности внешнего вида и поведения.
Основное отличие программного кода, обслуживающего формы, от кода в обычных модулях заключается в принципе программирования. В то время как программа на Visual Basic for Applications вроде той, что была нами совместно написана в предыдущей главе книги, выполняется "последовательно", — то есть все ее команды выполняются одна за другой, и их порядок выполнения изменяется только в зависимости от операторов условного и безусловного перехода "If" и "Goto" (в принципе — в частности могут быть отклонения от данного правила), форма "реагирует на события" — то есть каждому элементу формы может быть поставлена в соответствие определенная отдельная программа, выполняющая нужные команды при совершении с этим элементом каких-либо действий. Большинство программ для Windows, да и сам текстовый редактор Microsoft Word построены именно по такому принципу — они не "работают сами по себе", а ждут от пользователя команд и "реагируют" на них: выполняют те или иные действия. Так и форма: программист должен разработать ее интерфейс — создать форму, расположить на ней элементы, определить их свойства, а затем написать "программы обработки событий", поместив в каждой такой программе код, который должен быть выполнен, когда то или иное событие произойдет, то есть будет нажата какая-нибудь кнопка на форме или на клавиатуре, введен текст в поле ввода текста, выбран тот или иной флажок на форме и др. Программы обработки событий могут изменять и внешний вид самой формы и ее элементов: прятать их или показывать, изменять любые их свойства, так как у каждого элемента формы есть свое уникальное (т. е. принадлежащее только этому элементу и больше никакому другому) имя, по которому к нему можно обращаться.