Запустив эту программу несколько раз, получаем, что в переменную «papka» записывается путь и имя папки, но, если в пути или имени были пробелы, то путь окаймляется кавычками: "C: \Program Files\Microsoft Office\Шаблоны\", а если пробелов в пути не было, то кавычки по краям не ставятся. Поэтому возвращаемую переменную нужно обработать — убрать кавычки. Сделать это можно с помощью уже известных нам команд «Left», «Rigth», «Mid» и "Len":
If Right(papka, 1) = Chr$(34) Then papka = Mid(papka, 2, Len(papka) — 2)
"Chr$(34)" — это команда, которая возвращает символ с ASCII-кодом 34: кавычку. (Каждый символ в Dos и Windows имеет свой номер — ASCII-код, по которому его можно вызвать на экран. Узнать код выделенного символа можно командой "MsgBox Asc(Selection.Text)". Узнать о командах "Chr$" и «Asc» можно, порывшись в справке.)
Кроме того, не мешало бы сделать так, чтобы при запуске программы окно "Копирование файла" по умолчанию стояло бы на директории с активным документом — не всегда же нужно сохранять все обрабатываемые документы в отдельной папке! Нет ничего проще — установим параметр «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)
Теперь при нажатии кнопки «Отмена» в диалоговом окне выбора папки произойдет выход из программы.
Окончательный вид нашего макроса: