ПредишенСледващото

Word, заменяйки намерени текстови изтрити редове.

Здравейте Как иначе (с изключение на следните методи) може ефективно да замени определена променлива в Word-е премахването на линията на документ, когато променливата е?
Функциониращ кода по-долу, работи много бавно и, следователно, не е много ефективен при дори много големи документи. (I използвате отметка Delphi-> Servers)
а, б, Vstart, продавам, OldStr: OleVariant;
Дължина на думата. J, K, п # 032; # 032; # 032 ;: число;
KeyStop. булева;
.
.
к # 032 ;: = 0;
KeyStop: = False;
п # 032 ;: =? // задаване на желаната стойност
# 032; # 032; повторение
# 032; # 032; # 032; а: = й;
# 032; # 032; # 032; б: = J + п;
# 032; # 032; # 032; ако WordDocument1.Range (а, Ь) .Text = oldStr след това започва
# 032; # 032; # 032; # 032; # 032; Vstart # 032 ;: = й;
# 032; # 032; # 032; # 032; # 032; VEND # 032; # 032 ;: = J + п;
# 032; # 032; # 032; # 032; # 032; KeyStop: = True;
# 032; # 032; # 032; приключи;
# 032; # 032; # 032; Inc (й);
# 032; # 032; до (J = дължина на дума п) или (KeyStop = True);
WordDocument1.Range (Vstart, VEND) .Изберете; # 032;
WordApplication1.Selection.Delete (EmptyParam, EmptyParam);

, където дължината на думите - дължината на текста на документа.

Pereinachit въпрос.
В документ Word97, можете да намерите определен ред и да го маркирате по начин, различен от по-горе?

Вие трябва да използвате вариант, защото метода на Find.Execute е малко бъги. Нещо като това, например:

Rnge: = Doc.Content;
Rnge.Find.Execute ( "старите", Wrap: = wdFindContinue, ReplaceWith: = "нов", замени: = wdReplaceAll);

Съвет от Дебора Пейт



WordApp: = CreateOLEObject ( "Word.Application");
WordApp.Documents.Open (yourDocFile);
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text: = yourOldStr;
WordApp.Selection.Find.Replacement.Text: = yourNewStr;
WordApp.Selection.Find.Forward: = True;
WordApp.Selection.Find.Wrap: = 1;
WordApp.Selection.Find.Format: = False;
WordApp.Selection.Find.MatchCase: = False;
WordApp.Selection.Find.MatchWholeWord: = False;
WordApp.Selection.Find.MatchWildcards: = True;
WordApp.Selection.Find.MatchSoundsLike: = False;
WordApp.Selection.Find.MatchAllWordForms: = False;
WordApp.Selection.Find.Execute (Замяна: = 2);

WordApp.ActiveDocument.SaveAs (yourNewDocFile);
WordApp.Quit;
WordApp: = Неопределен;

MBO, благодаря ти, но това е стандартен начин за заместване на един низ в друг.
И въпросът е да се намери даден низ и всичко това изберете.
WordDocument1.Range (а, Ь).

Изразът не завърши последен път.
Нещо като:
WordDocument1.Range (а, Ь) .Изберете

Субекта е, BTW: замяна на премахването намери текстов низ

Аз разбирам, че във втория пример можете да останете на линия
WordApp.Selection.Find.Text: = yourOldStr;

Не. Това просто питам един от параметрите на търсенето, но не спира на yourOldStr

Реших. Запомнете, е хубаво нещо - и след това да дойде по-удобно. Данните се въвеждат в Word от някои съхранява масив, образуван по-рано.
Var
oldStr, newStr, сменете: OleVariant;
.
.
Замяна: = 1;
повторение
Inc (Стъпка);
.
WordApplication1.Selection.Find.ClearFormatting; WordApplication1.Selection.Find.Replacement.ClearFormatting;
WordApplication1.Selection.Find.Text: = oldStr;
ако WordApplication1.Selection.Find.Execute (oldStr, EmptyParam. замяна) след това да започне
ако масив ^ [Стъпка] = "" след // Изтриване линията ако няма данни
WordApplication1.Selection.Delete (EmptyParam, EmptyParam)
още
WordApplication1.Selection.TypeText (newStr); // Позволява ви да замени низ по-дълго от 256 знака
приключи;
.
докато Етап = FullStep

Памет: 0.74 MB
Време: 0,027 гр

Свързани статии

Подкрепете проекта - споделете линка, благодаря!