Читает только первые 4 страницы RTF-файла. Word.Application
Коллеги, добрый день.
Возникла проблема:
При подключении к RTF-файлу средствами Word.Application, считываются только первые несколько страниц (3-4 из 300, или ~8000 символов из ...даже затрудняюсь).
Причём только на одной машине и внезапно.
Файлы разные, но с похожей структурой (выписки банка)
Что пробовал:
Переустановку Word, переустановку всего MS Office.
На машине:
Win 10 (x64)
MS Office 2013
Платформа 1C 8.3.10.2561
Конфигурация УПП 1.3 в режиме совместимости 8.2.13 (серверная)
Запуск в толстом клиенте
Код выполняется &НаКлиенте
Собственно, часть кода:
"АктивныйДокумент.Content.ComputeStatistics(2)" возвращает только 3-4 страницы, хотя страниц минимум 300.
"Страница = АктивныйДокумент.GoTo(1, 1, НомерСтраницы)" тоже не "шагает" дальше 3-4 страниц, даже если "НомерСтраницы" устанавливать принудительно .
Повторюсь, внезапно перестало работать только на одной машине.
Что можно сделать?
Может быть, переустановить компоненту? Как?
Копаться в реестре? Тогда, что искать?
Хелп! >.<
Возникла проблема:
При подключении к RTF-файлу средствами Word.Application, считываются только первые несколько страниц (3-4 из 300, или ~8000 символов из ...даже затрудняюсь).
Причём только на одной машине и внезапно.
Файлы разные, но с похожей структурой (выписки банка)
Что пробовал:
Переустановку Word, переустановку всего MS Office.
На машине:
Win 10 (x64)
MS Office 2013
Платформа 1C 8.3.10.2561
Конфигурация УПП 1.3 в режиме совместимости 8.2.13 (серверная)
Запуск в толстом клиенте
Код выполняется &НаКлиенте
Собственно, часть кода:
//Подключение к файлу
Ворд = Новый COMОбъект("Word.Application");
Ворд.Visible = Ложь;
Ворд.Documents.Open(ФайлЗагрузкиMSOffice, 0, 1, 0);
Ворд.Documents.Item(1).Activate();
АктивныйДокумент = Ворд.ActiveDocument;
//Постраничный обход документа
Для НомерСтраницы = 1 По АктивныйДокумент.Content.ComputeStatistics(2) Цикл
Страница = АктивныйДокумент.GoTo(1, 1, НомерСтраницы);
//...Обработка страницы, включающая парсинг текста и т.д., в общем, к делу не относится...
КонецЦикла;
Показать"АктивныйДокумент.Content.ComputeStatistics(2)" возвращает только 3-4 страницы, хотя страниц минимум 300.
"Страница = АктивныйДокумент.GoTo(1, 1, НомерСтраницы)" тоже не "шагает" дальше 3-4 страниц, даже если "НомерСтраницы" устанавливать принудительно .
Повторюсь, внезапно перестало работать только на одной машине.
Что можно сделать?
Может быть, переустановить компоненту? Как?
Копаться в реестре? Тогда, что искать?
Хелп! >.<
Найденные решения
Можно еще открыть документ в пользовательском режиме, нажать Ctrl + G, ввести номер страницы больше 4 и проверить, перейдет ли на нужную страницу. Если перейдет, то записать макрос и посмотреть какой код сформирует. По идее должен быть тот же самый с GoTo. Важно проверить имена параметров и их значения.
(16)
Получилось вот как:
Благодаря подсказке сформировал макрос, макрос использует "Selection.GoTo", "Selection.GoTo" не работает в режиме чтения.
Отключил режим чтения - взлетело в первоначальном варианте! :)
Всем спасибо!
Получилось вот как:
Ворд.Documents.Open(ФайлЗагрузкиMSOffice, 0, 0, 0);
Благодаря подсказке сформировал макрос, макрос использует "Selection.GoTo", "Selection.GoTo" не работает в режиме чтения.
Отключил режим чтения - взлетело в первоначальном варианте! :)
Всем спасибо!
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
2) АктивныйДокумент.ComputeStatistics(2) - этим методом уже пользуюсь (выдаёт 4 страницы)
3) АктивныйДокумент.Content.Information(1) - метод выдаёт те же неправильные 4 страницы
1) АктивныйДокумент.BuiltInDocumentProperties("Number of pages") - метод вернул правильное количество страниц!
Но это не поможет, пока метод "АктивныйДокумент.GoTo(1, 1, НомерСтраницы)" продолжает останавливаться на четвёртой странице.
Это не позволяет получить содержимое страниц 5, 6... и распарсить их :(
В текущем файле 187 страниц, ".GoTo(1, 1, 5)" - возвращает страницу 4.
2) АктивныйДокумент.ComputeStatistics(2) - этим методом уже пользуюсь (выдаёт 4 страницы)
3) АктивныйДокумент.Content.Information(1) - метод выдаёт те же неправильные 4 страницы
1) АктивныйДокумент.BuiltInDocumentProperties("Number of pages") - метод вернул правильное количество страниц!
Но это не поможет, пока метод "АктивныйДокумент.GoTo(1, 1, НомерСтраницы)" продолжает останавливаться на четвёртой странице.
Это не позволяет получить содержимое страниц 5, 6... и распарсить их :(
В текущем файле 187 страниц, ".GoTo(1, 1, 5)" - возвращает страницу 4.
(3). Да, Вы правы, "АктивныйДокумент.ComputeStatistics(2)" выдаёт правильное количество страниц.
"GoTo(1, 2)" - похоже не осуществляет переход на новую страницу.
Дело в том, что после перехода на страницу я вычитываю номер первого символа страницы (номер относительно документа) и длину страницы.
В цикле из 100 проходов "GoTo(1, 2)" все сто номеров первого символа страницы и длина страницы совпали.
"GoTo(1, 2)" - похоже не осуществляет переход на новую страницу.
Дело в том, что после перехода на страницу я вычитываю номер первого символа страницы (номер относительно документа) и длину страницы.
В цикле из 100 проходов "GoTo(1, 2)" все сто номеров первого символа страницы и длина страницы совпали.
Можно еще открыть документ в пользовательском режиме, нажать Ctrl + G, ввести номер страницы больше 4 и проверить, перейдет ли на нужную страницу. Если перейдет, то записать макрос и посмотреть какой код сформирует. По идее должен быть тот же самый с GoTo. Важно проверить имена параметров и их значения.
(16)
Получилось вот как:
Благодаря подсказке сформировал макрос, макрос использует "Selection.GoTo", "Selection.GoTo" не работает в режиме чтения.
Отключил режим чтения - взлетело в первоначальном варианте! :)
Всем спасибо!
Получилось вот как:
Ворд.Documents.Open(ФайлЗагрузкиMSOffice, 0, 0, 0);
Благодаря подсказке сформировал макрос, макрос использует "Selection.GoTo", "Selection.GoTo" не работает в режиме чтения.
Отключил режим чтения - взлетело в первоначальном варианте! :)
Всем спасибо!
(18)
(19)
Установил 10-секундную задержку после каждого действия:
Антивирус выключен (ESET).
Осталось без изменений. К слову, на машинах где "работает", стоят диски куда медленнее. Ковыряюсь дальше...
(19)
Установил 10-секундную задержку после каждого действия:
Ворд.Documents.Open(Загрузка.Файл, 0, 1, 0);
...//10 сек
Ворд.Documents.Item(1).Activate();
...//10 сек
АктивныйДокумент = Ворд.ActiveDocument;
...//10 сек
Антивирус выключен (ESET).
Осталось без изменений. К слову, на машинах где "работает", стоят диски куда медленнее. Ковыряюсь дальше...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот