Тайны и секреты компьютера | страница 46
Кроме того, не мешало бы сделать так, чтобы при запуске программы окно "Копирование файла" по умолчанию стояло бы на директории с активным документом — не всегда же нужно сохранять все обрабатываемые документы в отдельной папке! Нет ничего проще — установим параметр «Directory» как "ActiveDocument.Name" перед командой".Display":
With Dialogs(wdDialogCopyFile)
Directory = ActiveDocument.Path
Display
papka =.Directory
End With
If Right(papka, 1) = Chr$(34) Then papka = Mid(papka, 2, Len(papka) — 2)
Это и есть необходимый код для отображения диалогового окна и получения пути к папке для сохранения обработанных документов. Наконец, сделаем так, чтобы нажатие кнопки «Отмена» в диалоговом окне приводило бы не к простому продолжению работы программы, а к выходу из нее. Для этого в справке по слову".Display" узнаем, что эта команда является функцией — то есть возвращает определенное значение, в зависимости от того, какая кнопка была нажата. Добавим в программу условие и команду выхода из программы:
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)
Теперь при нажатии кнопки «Отмена» в диалоговом окне выбора папки произойдет выход из программы.
Окончательный вид нашего макроса:
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
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