• Авторизация


Поиск и замена текста в MS Word на jscript 07-11-2008 10:05 к комментариям - к полной версии - понравилось!


Оччень оччень не люблю тупить. Когда простейшую задачу не можешь сделать из за отсутствия примеров или каких либо левых ошибок.


Вот таким вот образом тупил полтора дня с задачей поиска и замены текста в документе с помощью jscript.
Погуглив и нашел пример на vbscript, тот нифига не работал. Долго долго искал примеры и подбирал параметры для метода Find.Execute, сообразил что надо посмотреть в инспекторе объектов в Visual Studio, там было примерно это
bool Execute(ref object FindText, ref object MatchCase, ref object MatchWholeWord, ref object MatchWildcards, ref object MatchSoundsLike, ref object MatchAllWordForms, ref object Forward, ref object Wrap, ref object Format, ref object ReplaceWith, ref object Replace, ref object MatchKashida, ref object MatchDiacritics, ref object MatchAlefHamza, ref object MatchControl)

Member of Microsoft.Office.Interop.Word.Find
собственно и не ясно какой параметр для чего нужен вообще.
Попытки сделать поиск и замену были безуспешны. Уже хотел грызть стол. Наконец сегодня нашел на мсдн описание той же функции попроще:



function Execute(

         FindText : Object, //текст для поиска
         MatchCase : Object, //искать по регистру или нет
         MatchWholeWord : Object,//целиком слово ? 
         MatchWildcards : Object, //можно ли звездочку юзать
         MatchSoundsLike : Object, //типа похожие слова может искать
         MatchAllWordForms : Object, //хз
         Forward : Object,  //искать вперед - назад
         Wrap : Object, //где искать
         Format : Object, //хз
         ReplaceWith : Object, //текст на замену 
         Replace : Object, //где менять
         MatchKashida : Object, //хз
         MatchDiacritics : Object, 
         MatchAlefHamza : Object, 
         MatchControl : Object
) : Boolean;


Попробовал, тоже не получалось. Система сообщала об ошибке в параметрах функции.

Только методом научного тыка и более внимательного чтения хелпа по функции Execute на msdn понял что косяк в том что в объект Format надо было ставить булевское значение а не Null.
Потом косяк был с Wrap (искать по всему тексту или нет) и Replace (заменять один раз или не менять или все разы ), не мог понять что туда засовывать, пока не вспомнил что enum это типа числа.
В общем искать и менять надо примерно так:


//JScript
//Создаем объект для работы с Вордом
var wrd = new ActiveXObject("Word.Application");
wrd.Documents.Add(); //Создаем новый документ
adoc = wrd.ActiveDocument; //Получаем указатель на активный документ
myRange = adoc.Range(Start = 0, End = 0); //Указатель на область в документе
myRange.Text = "SearchText notSearch SearchText" ;

var fnd = adoc.Content.Find; //Получаем объект поиска по всему документу

//многострадальная функция – ищет текст и меняет его на другой по всему документу
fnd.Execute("SearchText", false, true, false,  false, true, true, 1, true, "текст на замену", 2, false, false, false, false);


В общем очень рад что хоть теперь получилось…
Вот здесь подробно расписано что к чему:
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.find.execute.aspx


 



 

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Поиск и замена текста в MS Word на jscript | Чарубаэль - Дневник | Лента друзей Чарубаэль / Полная версия Добавить в друзья Страницы: раньше»