Читаем Интернет-журнал "Домашняя лаборатория", 2007 №7 полностью

Запустив эту программу несколько раз, получаем, что в переменную "papka" записывается путь и имя папки, но, если в пути или имени были пробелы, то путь окаймляется кавычками: "C: \Program Files\Microsoft Office\Шaблoны\", а если пробелов в пути не было, то кавычки по краям не ставятся. Поэтому возвращаемую переменную нужно обработать — убрать кавычки.

Сделать это можно с помощью уже известных нам команд "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

* * *

Перейти на страницу:

Похожие книги