Книги онлайн и без регистрации » Разная литература » Интернет-журнал "Домашняя лаборатория", 2007 №7 - Глуховский

Интернет-журнал "Домашняя лаборатория", 2007 №7 - Глуховский

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 276 277 278 279 280 281 282 283 284 ... 511
Перейти на страницу:
краям не ставятся. Поэтому возвращаемую переменную нужно обработать — убрать кавычки.

Сделать это можно с помощью уже известных нам команд "Left", "Right", "Mid" и "Len":

If Right (papka, 1) = Chr$ (34) Then papka = Mid (papka, 2, Len (papka) — 2)

"Chr$(34)" — это команда, которая возвращает символ с ASCII-кодом 34: кавычку. (Каждый символ в Word имеет свой номер — ASCII-код, по которому его можно вызвать на экран. Узнать код выделенного символа можно командой "MsgBox Asc(Selection.Text)". Узнать о командах "Chr$" и "Asc" можно, поискав информацию в Справочной системе.)

Кроме того, не мешало бы сделать так, чтобы при запуске программы окно "Копирование файла" по умолчанию стояло бы на директории с активным документом — не всегда же нужно сохранять все обрабатываемые документы в отдельной папке! Нет ничего проще — установим параметр "Directory" как

"ActiveDocument.Path" перед командой".Display":

With Dialogs (wdDialogCopyFHe)

Directory = ActiveDocument.Path

Display

papka =.Directory

End With

If Right (papka, 1) = Chr$ (34) Then papka = Mid (papka, 2, Len (papka) — 2)

Это и есть необходимый код для отображения диалогового окна и получения пути к папке для сохранения обработанных документов.

Наконец, сделаем так, чтобы нажатие кнопки "Отмена" в диалоговом окне приводило бы не к простому продолжению работы программы, а к выходу из нее. Для этого в справке по слову".Display" узнаем, что эта команда является функцией — то есть возвращает определенное значение, в зависимости от того, какая кнопка была нажата (рис. 5.41).

Рис. 5.41. Microsoft Office 97. Справка по методу .Display. Видно, что этот метод возвращает значение — "Return Value", то есть, является функцией.

Добавим в программу условие и команду выхода из программы — он должен произойти, если в диалоговом окне нажата кнопка "Отмена" (тогда функция. Display вернет в программу значение "0"):

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)

Теперь при нажатии кнопки "Отмена" в диалоговом окне выбора папки произойдет выход из программы.

Необходимо вставить этот код в нашу программу. Довольно ясно, что данный код должен располагаться в ее начале, — чтобы можно было задать папку для сохранения файлов и, запустив автоматическую их конвертацию, уйти от компьютера и заняться другими делами. Кроме того, следует несколько модифицировать команду сохранения документа, заменив путь к файлу переменной "papka" (вернувшись к предыдущей версии этой команды — без использования свойства. FullName). В итоге она будет выглядеть так:

ActiveDocument.SaveAs FileName:=рарка + Left (ActiveDocument.Name, Len(ActiveDocument.Name) -4), FileFormat:=wdFormatRTF

И вот, наконец, можно привести окончательный вид нашего макроса со всеми внесенными в него доработками:

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. Для тестирования и отладки небольшого фрагмента кода или даже одной команды вынесите

1 ... 276 277 278 279 280 281 282 283 284 ... 511
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. В коментария нецензурная лексика и оскорбления ЗАПРЕЩЕНЫ! Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?