VBA для тех кто любит думать


VBA и Office XP - часть 97


 

ActiveDocument.SaveAs FileName:=ActiveDocument.Path + "\" + Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4), FileFormat:=wdFormatRTF

 

Иначе Word будет сохранять документы в той папке, где последний раз был сохранен или открыт како-нибудь документ с помощью диалоговых окон "Сохранить как…" и "Открыть…". А это все же не всегда будет той же самой папкой, где находятся обрабатываемые документы, - к тому же документы для обработки можно открывать в Word и путем перетаскивания иконки файла в окно редактора, а при таком способе открытия папка сохранения документов не меняется.

В Visual Basic for Applications у обьекта ActiveDocument есть также параметр FullName, который представляет из себя полный путь к документу, включающий и иерархию папок. Подробнее об этом параметре можно узнать в Справочной системе VBA. Иными словами, последнюю команду можно переписать как

 

ActiveDocument.SaveAs FileName:= Left(ActiveDocument.FullName, Len(ActiveDocument.FullName) - 4), FileFormat:=wdFormatRTF

 

Она будет давать точно такой же результат, что и приведенная выше.

И, наконец, последняя строчка:

 

ActiveWindow.Close

End Sub

 

Вот и конец программы - закрытие активного окна с документом.

Ну, а теперь надо добиться того, чтобы программа могла обрабатывать не один документ, а сразу множество. Можно пойти двумя путями: либо обрабатывать все нужные документы в одной папке, либо обработать все открытые документы, предварительно открыв нужные. Лично я предпочел второй вариант: ведь тогда можно открыть для обработки все действительно необходимые документы, несмотря на их исходное расположение - пусть даже и не в одной папке[10].

Как это сделать? Заметим, что готовый документ закрывается после обработки, и в окне Word активизируется следующий документ из всех открытых в редакторе. Следовательно, во-первых, надо обеспечить выполнение макроса над всеми документами, то есть его повторение - после окончания работы макроса он должен быть выполнен сначала.


Начало  Назад  Вперед