|
|
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Как идеи: 1) Гугля уверяет. что ошибка случается, когда в Variant содержится null. Вы не пытались, после Open проверять, действительно ли документ открыт и WordDocument корректен. Насколько я вижу по Вашим словам "Если закомментировать...то служба падает дальше на ... т.е. проблема не в ConvertToText, а в самом обращении к серверу Word" обращении к WordDocument 2) Некоторые операции Word умеет выполнять ассинхронно (например пагинацию). Вполне возможно, что ConvertToText из их числа. Я бы while заменил на for в обратном порядке (т.е. сначала обрабатывать последнию таблицу в документе по индексу и двигаться к первой). Т.е. идея аналогичная предложению 21866312 только дополнительно изменить порядок обработки таблиц на обратный. P.S. Беглый поиск по Inet уверяет. Documents.Open вполне может возврашать null в некоторых случаях (ошибки с правами). Возможно и при других ошибках при открытии документов вполне можно null словить. https://social.msdn.microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/word-2007-documentsopen-returns-null-in-aspnet ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2019, 18:45 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevКак идеи: 1) Гугля уверяет. что ошибка случается, когда в Variant содержится null. Вы не пытались, после Open проверять, действительно ли документ открыт и WordDocument корректен. Насколько я вижу по Вашим словам "Если закомментировать...то служба падает дальше на ... т.е. проблема не в ConvertToText, а в самом обращении к серверу Word" обращении к WordDocument 2) Некоторые операции Word умеет выполнять ассинхронно (например пагинацию). Вполне возможно, что ConvertToText из их числа. Я бы while заменил на for в обратном порядке (т.е. сначала обрабатывать последнию таблицу в документе по индексу и двигаться к первой). Т.е. идея аналогичная предложению 21866312 только дополнительно изменить порядок обработки таблиц на обратный. P.S. Беглый поиск по Inet уверяет. Documents.Open вполне может возврашать null в некоторых случаях (ошибки с правами). Возможно и при других ошибках при открытии документов вполне можно null словить. https://social.msdn.microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/word-2007-documentsopen-returns-null-in-aspnet В общем, синопис такой Код: pascal 1. 2. 3. 4. 5. 6. 7. Сразу после этого кода VarIsEmpty(WordDocument) = True, а процесс WINWORD.EXE ведет себя как я уже показывал ранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 10:35 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд, А накатить обновления на офис не поможет?.. Или и так всё стоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:06 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
alekcvpКвейд, А накатить обновления на офис не поможет?.. Или и так всё стоит? На моей машине (на которой код падает) - Office 2013 На машине коллеги (где код не падает) - Office 2016 Проблема в том, что заказчиков много и у каждого зоопарк офисов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:14 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдalekcvpКвейд, А накатить обновления на офис не поможет?.. Или и так всё стоит? На моей машине (на которой код падает) - Office 2013 На машине коллеги (где код не падает) - Office 2016 Проблема в том, что заказчиков много и у каждого зоопарк офисов Тем более очень похоже на баг офиса. А если по условию "VarIsEmpty(WordDocument) = True" попытаться закрыть Word через OLE?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:17 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Как вариант: если это действительно баг и если для 2013 офиса есть патч этого бага, то можно найти это обновление отдельно и ставить его вместе с приложением принудительно, если у клиента стоит 2013 офис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:18 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
alekcvpКвейдпропущено... На моей машине (на которой код падает) - Office 2013 На машине коллеги (где код не падает) - Office 2016 Проблема в том, что заказчиков много и у каждого зоопарк офисов Тем более очень похоже на баг офиса. А если по условию "VarIsEmpty(WordDocument) = True" попытаться закрыть Word через OLE?... Код: pascal 1. отрабатывает, я проверил. Но процесс WINWORD.EXE продолжает жрать память до отказа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:18 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
и самое плохое, что эта замануха происходит только в режиме службы этот же код на моей машине в режиме приложения отрабатывает нормально у коллеги с другой версией офиса в режиме службы работает ОК ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:20 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд, А служба от чьего имени запускается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:21 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Где-то ещё читал, что чтобы заверщить процесс необходимо кроме вызова .Quit ещё обнулить все ссылки на сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:21 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
alekcvpКвейд, А служба от чьего имени запускается?Local system account Но разве это имеет значение? У меня код падает на определенном наборе файлов, на другом наборе все отлично в службе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:25 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
alekcvpГде-то ещё читал, что чтобы заверщить процесс необходимо кроме вызова .Quit ещё обнулить все ссылки на сервер. у меня так Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:25 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдalekcvpКвейд, А служба от чьего имени запускается?Local system account Но разве это имеет значение? У меня код падает на определенном наборе файлов, на другом наборе все отлично в службе. Ну, выше уже было предположение про права доступа, хотя у system полный доступ ко всему, так что мимо (если файлы не в сети лежат). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:39 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
19.04.2019 11:25, Квейд пишет: > у меня так > if not VarIsEmpty(WordServer)then проверять надо на not VarIsClear(WordServer) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 11:55 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд? В окне Attach to process моей службы нету в спискеIDE запустить от админа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 14:01 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Michael LongneckА нельзя интерфейсы прямо получить, а не через OleVariant обрабатывать? _WordApplication и.т.д.?Там же совместимости нет. Они свои для каждой версии офиса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 14:02 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейди самое плохое, что эта замануха происходит только в режиме службы этот же код на моей машине в режиме приложения отрабатывает нормальноА попробуй у себя службу запустить от имени локального пользователя. Может разные Ворды стартуют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 14:06 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Кажется, вот твое счастье https://stackoverflow.com/questions/10837437/interop-word-documents-open-is-null http://davidsdotnetlines.blogspot.com/2015/12/wordapplicationdocumentsopen-returns.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 14:11 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Кажется, вот твое счастье https://stackoverflow.com/questions/10837437/interop-word-documents-open-is-null http://davidsdotnetlines.blogspot.com/2015/12/wordapplicationdocumentsopen-returns.html У меня в DCOM config отсутствует эквивалент параметра "Microsoft Word 97 - 2003 Document", но я сейчас еще поэксперементирую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 16:29 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд_Vasilisk_Кажется, вот твое счастье https://stackoverflow.com/questions/10837437/interop-word-documents-open-is-null http://davidsdotnetlines.blogspot.com/2015/12/wordapplicationdocumentsopen-returns.html У меня в DCOM config отсутствует эквивалент параметра "Microsoft Word 97 - 2003 Document", но я сейчас еще поэксперементирую Помогло! Пошел с твоей ссылки дальше по ссылке https://stackoverflow.com/questions/1006923/automating-office-via-windows-service-on-server-2008 всего-то нужно, чтобы на машине существовали папки C:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop интересно, с чем это связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 16:54 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Не решение напрямую, но как обходной вариант - т.к. цель всего лишь сохранить как текст, и если формат docx, то можно заюзать wordpad. Как еще один обходной вариант - получать PID по hwnd и перед убитием проверять, от кого запущен и нет ли в нем лишних открытых документов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 17:00 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдПошел с твоей ссылки дальше по ссылкеНужно читать не только первый ответ с максимум голосов https://stackoverflow.com/a/24671664/5376639 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 18:12 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдC:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop интересно, с чем это связано? Подозреваю что с "гениальностью" программистов офиса, которые по-умолчанию считают что офис запускает интерактивный пользователь и сохраняют туда какие-нибудь временные файлы (а-ля ~document1.docx). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 19:05 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
КвейдНо процесс WINWORD.EXE продолжает жрать память до отказа Почему Эксель завершается только после CoUninitialize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2019, 19:55 |
|
||
|
Word, CreateOleObject и PID
|
|||
|---|---|---|---|
|
#18+
Квейд, Не надо никакого хендла Простой макрос и вуаля Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2019, 00:54 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39804102&tid=2039556]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 517ms |

| 0 / 0 |
