Антон Орлов - Тайны и секреты компьютера
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
ColorIndex = wdBlack
End With
With Selection.ParagraphFormat
LeftIndent = CentimetersToPoints(0)
RightIndent = 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
MatchAllWordForms = 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("Обработка закончена", vbInformation, "Обработка текстов")
End Sub
* * *Весь приведенный выше подробный разбор написания первой макрокоманды, возможно, кому-то показавшийся излишне подробным, помещен здесь исключительно для того, чтобы читающий эти строки мог представить себе ход рассуждений и мыслей, необходимый для создания макрокоманд, и тем самым освоить некоторые приемы анализа программного кода и самостоятельного обучения программированию на VBA. Ведь книга рассчитана не на профессиональных программистов, которые, без сомнения, знают эти приемы, а скорее на тех, кто ранее вообще не имел представления об этой отрасли человеческой деятельности.
А эти приемы таковы:
1. Для самого первого начала работы, а также для выяснения, какая команда соответствует тому или иному преобразованию текста или другому действию пользователя Word, необходимо широко использовать основное отличие редактора VBA от редакторов других языков программирования — средство записи макросов. Наличие средства записи макросов позволяет быстро и легко создать свою первую программу и начать ее изучать, а также может оказать серьезную помощь, когда необходимо «перевести» на язык VBA какое-либо действие пользователя Word.
2. Для грамотного написания кода, выяснения возможных продолжений каждой команды следует широко использовать контекстную подсказку VBA, которая появляется при наборе точки или скобки после уже написанной части команды.
3. Справка VBA — основной источник знаний по этому языку! Она построена по контекстному принципу — при вызове справки клавишей F1 отображается справка по той команде, на которой стоит в это время курсор. Таким образом можно быстро и легко изучить назначение, синтаксис и особенности каждой команды — стоит только набрать ее и вызвать справку. К сожалению, многие разделы справки не переведены на русский язык, поэтому англо-русский словарь (или система машинного перевода) может стать вашим спутником на время освоения VBA. Путешествия по справке и чтение различных ее разделов, даже не относящихся к непосредственно выполняемой задаче, обогатит Ваши знания по программированию в Word и не только…
4. Примеры справки VBA — работа, сделанная за вас! Копируйте фрагменты кода из примеров себе в программу и модифицируйте их так, как вам надо.
5. Для тестирования и отладки небольшого фрагмента кода или даже одной команды вынесите ее временно в отдельный модуль — проще будет работать.
В принципе, этих приемов хватит, чтобы начать полноценно изучать VBA. Ну, а дальнейшее зависит уже от вашего разума, логики, сообразительности и наблюдательности.
Visual Basic for Applications, пожалуй, на настоящее время единственный язык, который можно изучить абсолютно самостоятельно, без каких-либо дополнительных книг или текстов программ, достаточно лишь иметь "научный взгляд на мир", то есть способность наблюдать, экспериментировать и делать выводы. Даже эти главы имеют цель не столько научить вас программировать на VBA, сколько помочь вам начать учиться, чтобы вы не тратили множество времени на поиск и получение информации о не совсем очевидных вещах. Ведь, согласитесь, совсем неплохо облегчить вам начало работы и знакомство с возможностями редактора, немного проиллюстрировав процесс программирования.
Автогонки в Excel 2000
Если в программе Microsoft Excel 97 имеется встроенная игра-"леталка", то в следующей версии этой программы работы с электронными таблицами присутствуют даже настоящие автогонки! Так что не стоит удивляться большим размерам программ от Microsoft, — каждая из таких программ умеет многое, в том числе и играть.
Автогонки из Excel 2000
Как же добраться до этой автотрассы?
Запустите Excel 2000 и создайте новую книгу с помощью команды «Создать» из меню «Файл». Затем сохраните эту книгу как web-страницу с помощью соответствующей команды (т. е. "Сохранить как Web-страницу") того же меню, при этом в диалоговом окне сохранения установите в разделе «Сохранить» отметку в пункте "выделенное: Лист" и поставьте галочку в пункте "Добавить интерактивность". Откройте полученную страницу в браузере Microsoft Internet Explorer, во внедренном в нее листе Excel перейдите с помощью клавиши PageDown к строке 2000, а с помощью линейки горизонтальной прокрутки — к столбцу WC. Выделите строку 2000 (просто нажав мышью на ее номер в указателе номеров строк слева листа) и с помощью клавиши Tab переведите выделение на ячейку WC2000. После этого, нажав одновременно левые клавиши Ctrl, Alt и Shift, кликните левой кнопкой мыши на эмблеме Office в левом верхнем углу внедренного в web-страницу листа Excel. Вот вы и на трассе…
Ехать вперед — клавиша "стрелка вверх", тормозить — "стрелка вниз", поворачивать — соответственно стрелки вправо и влево. Включить фары — клавиша «о» (латинская), пробел — стрелять и уничтожать машины соперников. Соприкосновение с обочиной означает проигрыш: аварию автомобиля. На трассе чередуются ночь и день, — ночью освещение дороги дают только фары. На асфальте написаны имена разработчиков Excel'а.
Поскольку игра базируется не только на Excel'е, но и на средствах сопряжения этой программы с web-страницей, в том случае, если игра у вас не запускается, проследите, чтобы на компьютере были установлены Microsoft Web Components (компонент Office 2000) и в том случае, если они отсутствуют, установите их из дистрибутива Office.
К сожалению, в Excel XP ни автогонки, ни «леталка» не присутствуют. Однако наверняка в скором времени можно будет услышать, как в этой программе запустить какую-нибудь Free Space или еще что почище…
Глава 4. Пусть программа с вами говорит…
Продолжим изучение программирования на Visual Basic for Applications (напомним — сокращенно VBA). Подробные описания теперь уже не нужны — достаточно лишь заострения внимания на некоторых "подводных камнях" или скрытых возможностях.
В этой главе речь пойдет о так называемых "пользовательских формах". Формально они являются "нестандартными диалоговыми окнами" макросов, наподобие диалоговых окон Word, но по сути с их помощью можно создавать настоящие программы, подобные компилируемым программам для Windows, которые будут отличаться от них лишь тем, что для их работы необходим Microsoft Word. К сожалению, формы нельзя создавать с помощью средства записи макросов, но все средства создания форм снабжены подробной справкой, и на ее основе можно довольно быстро научиться работать с формами.
Для создания формы необходимо в любом доступном проекте (шаблоне или документе) из контекстного меню правой кнопки мыши в Менеджере проектов выбрать Вставить-UserForm.
Форма состоит из элементов-различных средств ввода и отображения информации (командных кнопок, мест для ввода текста, мест для вывода текста, переключателей и флажков и др.), которые могут на ней располагаться. У каждого элемента есть свойства-ширина, высота, цвет, особенности внешнего вида и поведения. Более подробно об элементах форм рассказывалось во второй главе.
Основное отличие программного кода, обслуживающего формы, от кода в обычных модулях заключается в принципе программирования. В то время как программа на VBA вроде той, что была нами совместно написана в предыдущей главе, чаще всего выполняется «последовательно», — то есть все ее команды выполняются одна за другой, и их порядок выполнения изменяется лишь в зависимости от операторов условного и безусловного перехода «If» и «Goto», форма "реагирует на события" — то есть каждому элементу формы может быть поставлена в соответствие определенная отдельная программа, выполняющая нужные действия.
Большинство программ для Windows, да и сам текстовый редактор Microsoft Word построены именно по такому принципу, — они не "работают сами по себе", а ждут от пользователя команд и «реагируют» на них: выполняют те или иные действия. Так и форма: программист должен разработать ее интерфейс — создать форму, расположить на ней элементы, определить их свойства, а затем написать "программы обработки событий", поместив в каждой такой программе код, который должен быть выполнен, когда то или иное событие произойдет, то есть будет нажата какая-нибудь кнопка на форме или на клавиатуре, введен текст в поле ввода текста, выбран тот или иной флажок на форме и т. д.