-
Здравствуйте. Пытаюсь сохранить страницы документа Word в jpeg. Во всех версиях ворда работает без проблем. В версии 2016 выдает ошибку "Запрашиваемый номер семейства не существует". Подскажите в чем может быть проблема? Код:
v := CreateOLEObject('Word.Application');
v.Documents.Open(FileName := XMLFile, ReadOnly := True);
iPages := v.ActiveDocument.ActiveWindow.Panes.Item(1).Pages;
cnt := iPages.Count;
for i := 1 to cnt do
begin
Pg := iPages.Item(i);
Bytes := Pg.EnhMetaFileBits;
...
end;
-
iPages - это массив? Item начинается с 1, а не с 0 ?
P.S. C Word-ом работала, но конкретно такого, что описано в вопросе, не делала.
-
iPages это Variant, полученный от OLE метода. А где вы увидели, что у меня Item начинается с 0?
-
У OLE ворда все массивы начинаются с 1.
-
for i := 1 to cnt do try Pg := iPages.Item(i); Bytes := Pg.EnhMetaFileBits; except ShowMessage(IntToStr(i) + " " + inttostr(iPages.Count)); end;
-
Что мне это даст? Я и так знаю по отладке, что i у меня = 1, а iPages.Count = 4.
-
ошибка говорит, что идет обращение к элементу коллекции, которого нет в момент обращения к ней.
я этой ошибке верю. и первое что бы я сделал - это проверил бы реальный размер коллекции в момент когда ошибка возникла.
-
Не убедил, но я проверил. Результат как и в отладчике, выдает "1 4". Повторюсь, данный код прекрасно работает в любом другом офисе, кроме 2016. Возможно в нем как-то объектная модель отличается, вот только как это узнать...
|