![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
между закладками ;) [Delphi, Windows]
GanibalLector © (2005-01-17 02:05:00)Цитата :
Если строку необходимо вставить в определенное место в тексте, то делаем закладку: Вставка=>Закладка в меню Word.
Но лучше использовать две закладки: начало текста и конец. Это может понадобиться в случае замены старого текста на новый(обновление данных).
Решил сделать именно так.Вставляю текст между закладками zk1 и zk4. !!!Между закладками 5 пробелов!!!
Делаю так :
var WordApp,Doc2:OleVariant;
i:integer;
begin
try
WordApp:=GetActiveOleObject('Word.Application');
except
WordApp:=CreateOleObject('Word.Application');
end;
WordApp.Documents.Open('e:\worddoc.doc');
Doc2:=WordApp.ActiveDocument;
WordApp.visible:=true;
for i:=1 to 5 do begin
sleep(400);
WordApp.ActiveDocument.Range(Doc2.Bookmarks.Item('zk1').Range.end,
Doc2.Bookmarks.Item('zk4').Range.start).Text:='F'+inttostr(i);end;
Doc2:=Unassigned;
WordApp:=Unassigned;
end;
Уже после первого цикла закладки по непонятным причинам расположены одинаково.И соответственно на выходе : : F5F4F3F2F1
Что я сделал неверно?Кто может высказаться по сабжу?
YurikGL (2005-01-18 09:13:00) [1]
> Набережных С. (18.01.05 09:07) [4]
Тоже верно... закладка же имеет св-во range у которого есть и конец и начало
YurikGL (2005-01-18 09:12:00) [2]
> Набережных С. (18.01.05 09:07) [4]
Тоже верно... закладка же имеет св-во range у которого есть и конец и начало
Набережных С. (2005-01-18 09:07:00) [3]>Это может понадобиться в случае замены старого текста на новый
А зачем две закладки? В документе выделяешь нужный участок и вставляешь закдадку. Закладка - все выделенное. Потом примерно так:
Doc2.Bookmarks.Item('zk1').Select;
WordApp.Selection.TypeText(newText);
YurikGL (2005-01-17 22:35:00) [4]попробуй вот так с бубном потанцевать
> WordApp.ActiveDocument.Range(Doc2.Bookmarks.Item('zk1').Range.end +1,
> Doc2.Bookmarks.Item('zk4').Range.start -1).Text:='F'+inttostr(i);end;
в разных вариациях
GanibalLector (2005-01-17 22:15:00) [5]Еще варианты есть?
aus (2005-01-17 03:46:00) [6]Попробуй тоже самое сделать в макросе на VBA и проследи по шагам.
Вообще я предпочитаю писать макросы (их отлаживать легче), а потом запускать из приложения один из них. Хоть VBA и не лучший вариант, но в таком случае для меня удобнее.