powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Word: поиск и замена везде
7 сообщений из 7, страница 1 из 1
Word: поиск и замена везде
    #39718786
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На VBA есть код, который ищет и заменяет текст везде, в т.ч. и в колонтитулах.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub FindAndReplaceFirstStoryOfEachType()
  Dim rngStory As Range
  For Each rngStory In ActiveDocument.StoryRanges
    With rngStory.Find
      .Text = "раз"
      .Replacement.Text = "два"
      .Wrap = wdFindContinue
      .Execute Replace:=wdReplaceAll
    End With
  Next rngStory
End Sub


Пытаюсь перевести его на Delphi, но получаю ошибку "Запрашиваемый номер семейства не существует".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
  I: Integer;
  Range: Variant;
begin
  for I := 1 to Doc.StoryRanges.Count do
  begin
    Range := Doc.StoryRanges.Item(I); // Ошибка здесь при I = 2
    Range.Find.Execute(
      FindText := 'раз',
      ReplaceWith := 'два',
      Replace := wdReplaceAll);
  end;
end;


Прошу помощи.
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39718791
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for I := 0 to Doc.StoryRanges.Count - 1 do ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39718836
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийfor I := 0 to Doc.StoryRanges.Count - 1 do ...Тогда спотыкается при I = 0. По справке смотрел, в VBA коллекции с 1 начинаются.
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39718883
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
type
  IEnumVARIANT2 = interface(IUnknown)
    ['{00020404-0000-0000-C000-000000000046}']
    function Next(celt: LongWord; out rgvar : OleVariant;
      out pceltFetched: LongWord): HResult; stdcall;
    function Skip(celt: LongWord): HResult; stdcall;
    function Reset: HResult; stdcall;
    function Clone(out Enum: IEnumVARIANT): HResult; stdcall;
  end;

var
  LEnum: IEnumVARIANT2;
  Range: OleVariant;
  LFetched: Cardinal;
begin
  LEnum := ActiveDocument.StoryRanges as IEnumVARIANT2;
  while LEnum.Next(1, Range, LFetched) = S_OK do begin
    Range.Find.Execute(
      FindText := 'раз',
      ReplaceWith := 'два',
      Replace := wdReplaceAll);
  end;
end;

IEnumVARIANT2 я переопределяю, потому, что в делфевском импорте IEnumVARIANT ошибка
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39719004
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Код: pascal
1.
LEnum := ActiveDocument.StoryRanges as IEnumVARIANT2;


Здесь ошибку выдает при компиляции: E2015 Operator not applicable to this operand type
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39719030
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmelinaOperator not applicable to this operand type
Код: pascal
1.
2.
3.
4.
5.
6.
var
  LDisp: IDispatch;
begin
  LDisp := ActiveDocument.StoryRanges;
  LEnum := LDisp as IEnumVARIANT2;
  .............

или
Код: pascal
1.
2.
if not VarSupports(ActiveDocument.StoryRanges, IEnumVARIANT2, LEnum) then
  OleError(E_NOINTERFACE);
...
Рейтинг: 0 / 0
Word: поиск и замена везде
    #39719036
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Код: pascal
1.
LEnum := LDisp as IEnumVARIANT2;

При выполнении тут ошибка: Exception class EIntfCastError with message 'Interface not supported'.
Спасибо за помощь. Решил отложить этот вопрос до лучших времен.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Word: поиск и замена везде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]