
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.193] |
![]() |
|
Сообщ.
#1
,
|
|
|
Стоит задача найти и заменить текст в колонтитулах документа word, в колонтитулах находятся таблицы, в которых также необходимо осуществить поиски замену. Накидал такой код:
![]() ![]() function SeekInsertInColon(SText, IText : string):boolean; var colon, colon1, colon2: olevariant; i, b: integer; begin for i:=1 to WordApp1.ActiveDocument.Sections.Count do begin colon2:=WordApp1.ActiveDocument.Sections.Item(i).Range; for b := 1 to WordApp1.ActiveDocument.Sections.item(i).Range.Tables.Count do begin {поиск и замена в колонтитулах} colon1:=colon2.Tables.item(b).range; colon:=Colon1.{Footers.}Range.Find; colon.ClearFormatting; colon.Replacement.ClearFormatting; colon.Text:=SText; colon.Replacement.Text:=IText; colon.Forward:=True; colon.Wrap:=wdFindContinue; colon.Format:=False; colon.MatchCase:=False; colon.MatchWholeWord:=False; colon.MatchWildcards:=False; colon.MatchAllWordForms:=False; colon.Execute(Replace:=wdReplaceAll); end; end; end; естественно ничего не работает, помогите найти ошибку. заранее огромное спасибо! |
![]() |
Сообщ.
#2
,
|
|
Вот так - отработало:
![]() ![]() function SeekInsertInColon(SText, IText : string):boolean; procedure DoReplace(Rng : OleVariant); var Finder : OleVariant; begin Finder := Rng.Find; Finder.ClearFormatting; Finder.Replacement.ClearFormatting; Finder.Text:=SText; Finder.Replacement.Text:=IText; Finder.Forward:=True; Finder.Wrap:=wdFindContinue; Finder.Format:=False; Finder.MatchCase:=False; Finder.MatchWholeWord:=False; Finder.MatchWildcards:=False; Finder.MatchAllWordForms:=False; Finder.Execute(Replace:=wdReplaceAll); end; var hdr, ftr: OleVariant; i: Integer; begin hdr := WordApp1.ActiveDocument.Sections.Item(1).Headers.Item(1).Range; DoReplace(hdr); for i := 1 to hdr.Tables.Count do begin DoReplace(hdr.Tables.Item(i).Range); end; ftr := WordApp1.ActiveDocument.Sections.Item(1).Footers.Item(1).Range; DoReplace(ftr); for i := 1 to ftr.Tables.Count do begin DoReplace(ftr.Tables.Item(i).Range); end; end; Было ![]() Стало ![]() |