На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Поиск и замена текста в колонтитулах word , Поиск и замена текста в колонтитулах с таблицей
    Стоит задача найти и заменить текст в колонтитулах документа word, в колонтитулах находятся таблицы, в которых также необходимо осуществить поиски замену. Накидал такой код:

    ExpandedWrap disabled
      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;


    естественно ничего не работает, помогите найти ошибку.
    заранее огромное спасибо!
      Вот так - отработало:
      ExpandedWrap disabled
        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;


      БылоПрикреплённый файлwrd_before.png (5,1 Кбайт, скачиваний: 1114)

      СталоПрикреплённый файлwrd_after.png (5,46 Кбайт, скачиваний: 1147)
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0213 ]   [ 18 queries used ]   [ Generated: 30.07.25, 20:46 GMT ]