Функции word.application выбивают ошибку

imendan

Green Team
22.09.2010
159
4
BIT
0
Здравствуйте, господа профи!

У всех прекрасно работает функционал с word.application, кроме одного юзера. У него в обычной функции выбивают ошибки. Интересная вещь, через Debug у него все прекрасно работает. Как отключаю Debug сразу ошибку выдает. В чем может быть проблема?

К примеру на выделенной строке:

Set handle = CreateObject("word.application")
Set WrdSelection = handle.Selection
WrdSelection.MoveDown wdLine, cellsCount

Переустановка Word, IBM Notes не помогла. Танец с бубном тоже :)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
открываем VB хелп и смотрим все параметры этой функции WrdSelection.MoveDown - пишем их все
и делаем стандартный вызов Call WrdSelection.MoveDown(........)
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
340
Не забываем при этом всякие wdLine, wdExtend, wdMove и пр. заменять на правильные константы или переменные.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
открываем VB хелп и смотрим все параметры этой функции WrdSelection.MoveDown - пишем их все
и делаем стандартный вызов Call WrdSelection.MoveDown(........)
Не забываем при этом всякие wdLine, wdExtend, wdMove и пр. заменять на правильные константы или переменные.
Да, товарищи! Так и было сделано. Все из вб-хэлпа. Ведь на других всех компьютерах работает.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
340
А кроме WrdSelection.MoveDown другие функции Word нормально работают? Может быть что-то с OLE в Windows не так, какие-то ключи в реестре поломаны?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
501
Версия пакета еще важна и версия ОС: обе x86, один из x64, обе x64.
Если через COM не работает ни word, ни excel, ни что-то другое из MS пакета, то дело может быть в папках Desktop, их надо создать если их нет:
Especially when running Office 32Bit on x64 systems, the following folders are required as well:
  • Windows x64: C:\Windows\SysWOW64\config\systemprofile\Desktop
  • Windows x86: C:\Windows\System32\config\systemprofile\Desktop
  • Please NOTE:
    For smooth operation, the folders named above need to be restored after a Windows Update
 

imendan

Green Team
22.09.2010
159
4
BIT
0
А кроме WrdSelection.MoveDown другие функции Word нормально работают? Может быть что-то с OLE в Windows не так, какие-то ключи в реестре поломаны?
Некоторые другие функции тоже не работают.
Странно, что через Debug все функции прекрасно работают. Как-то может быть так, что через Debug вызывается другой OLE?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
Некоторые другие функции тоже не работают.
Странно, что через Debug все функции прекрасно работают. Как-то может быть так, что через Debug вызывается другой OLE?
Интересн, а винда какая?)
В десятке последние обновы наколбасили, ващще в любом месте гемор может вылезти.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
340
OLE зло. Microsoft не сильно подумавши в своё время наколбасили, а теперь никак не могу пользователей отучить от этой штуки. Уж сколько раз они его пытались похоронить, да видать уже не судьба - теперь только вместе с Windows.
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
8
@alexas1

Какие ужасы Вы рассказываете! Есть ссылка почитать?
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Товарищи, спасибо за советы! Нашел причину. Я просто поставил Sleep 5 после инициилизации Word-а и теперь все прекрасно работает.
Век живи, век учись!

Благодарю всех!
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
Переустановка Word, IBM Notes не помогла. Танец с бубном тоже
зависит от бубна и стиля танца... ;) надо как минимум вычищать регистри от ОЛЕ перделок, разрегивать компоненту и регать её заново...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
Товарищи, спасибо за советы! Нашел причину. Я просто поставил Sleep 5 после инициилизации Word-а и теперь все прекрасно работает.
Век живи, век учись!

Благодарю всех!
что-то мне напоминает такой способ решения ;)
а могет быть просто цикл с ожиданием компоненты делать (где-то здесь поиск в винде процессов выкладывал)?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
Версия пакета еще важна и версия ОС: обе x86, один из x64, обе x64.
Если через COM не работает ни word, ни excel, ни что-то другое из MS пакета, то дело может быть в папках Desktop, их надо создать если их нет:
Especially when running Office 32Bit on x64 systems, the following folders are required as well:
  • Windows x64: C:\Windows\SysWOW64\config\systemprofile\Desktop
  • Windows x86: C:\Windows\System32\config\systemprofile\Desktop
  • Please NOTE:
    For smooth operation, the folders named above need to be restored after a Windows Update
вот подобный ППЦ и приводит к полному нежеланию знать про существование ОЛЕ ;)
 

imendan

Green Team
22.09.2010
159
4
BIT
0
что-то мне напоминает такой способ решения ;)
а могет быть просто цикл с ожиданием компоненты делать (где-то здесь поиск в винде процессов выкладывал)?

handle.Documents.Open filepath
handle.Activate

Activate не возвращает ничего ( )

А Documents.Open возвращает только сам документ. Разве что тут подождать.
( )
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
@alexas1

Какие ужасы Вы рассказываете! Есть ссылка почитать?
На Хабре чота было и на оффе изью читал, боюсь не найду уже((
А у меня лтсц - там такого, канешна, нету)
Ещё, микрики патчи обещали на всё билды, уже есть навер, они быстро работают
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
handle.Documents.Open filepath
handle.Activate

Activate не возвращает ничего ( )

А Documents.Open возвращает только сам документ. Разве что тут подождать.
( )
не там по имени окна (в винде нет "ничего" без окон ;) ) поиск
в закрепленной теме прям Приложения Windows
 
Последнее редактирование:

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
вот поэтому предпочитаю делать чистый XML и потом офису лишь давать его открывать - тогда никакое OLE и костыли не нужны ;)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!