Страница: 1 |
Вопрос: Не работает замена | Добавлено: 11.10.09 17:40 |
Автор вопроса: ![]() |
Здравствуйте
В Access пытаюсь заставить работать следующий код. Смысл кода в том, чтобы открыть файл C:\letter.doc и заменить в нем маячок <<organizationname>> на подставное, в данном случае на Trylala, после чего сохранить документ и закрыть. Функция Debug.Print должна тот самый целевой кусочек контента отпостить, дабы я увидел, произошли ли изменения Sub Edit_letter()
Set appWord = CreateObject("Word.Application") With appWord .Documents.Open FileName:="C:\letter.doc", ReadOnly:=False With .ActiveDocument.content.Find .Text = "<<organizationname>>" .Replacement.Text = "Trylala" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With Debug.Print Left(.ActiveDocument.content, 34) .ActiveDocument.Save .Quit End With End Sub Проблема в том, что замена не работает. При этом, ActiveDocument.content правильно возвращает содержимое документа, редактировать документ тоже можно. Еще одна особенность заключается в том, что если перенести этот код в Word (с некоторой редакцией, в частности, убрав пемеренную appWord), то код работает корректно Помогите, пожалуйста |
Ответы | Всего ответов: 1 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 15.10.09 19:37 |
appWord лучше все-таки объявить явно как объектную переменную, в конце кода процедуры объект не забывай уничтожать тоже явно. А вообще все не работает из=за того, что не указаны значения констант wdFindContinue и wdReplaceAll. В Word они понятное дело инициализированы библиотекой поддержки. Чтобы в будущем избегать таких косяков с нормальным в общем кодом, советую всегда пользоваться Option Explicit. Ниже проверенный исправленный рабочий код:
|
Страница: 1 |
|