Проблема С Office 2013

Тема в разделе "Lotus - Программирование", создана пользователем DamirAstana, 27 янв 2015.

  1. DamirAstana

    DamirAstana Member

    Регистрация:
    26 май 2014
    Сообщения:
    9
    Симпатии:
    0
    Всем привет.

    С появлением Windows 8.1 и офиса 2013 выявилась такая проблема, что winword.exe висит в процессах после выполнения метода Quit() где то минут 5, потом процесс убивается и все идет нормально

    Код (Text):
    Set wdoc=CreateObject("Word.Application")  
    wdoc.Documents.Open(templateFile)
    Set wordDoc=wdoc.ActiveDocument
    wdoc.Visible=false

    ' тут у нас заполнение шаблона ворда
    .....

    createWordFile = "templateName.doc"
    wordDoc.SaveAs(createWordFile)     
    wordDoc.close
    wdoc.Quit
    Set wdoc = Nothing
    Рабочая станция является моноблоком. Причем ворд висит и сам по себе, когда открываешь и закрываешь любой ворд документ. Отключал все надстройки для ворда - не помогло. В процессах висит и Excel.

    Кто нибудь сталкивался с такой проблемой?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Думаю это особенность win8 (в частности metro-UI), как и в MacOS 10.10, это делано для быстрого переключения между приложениями в metro-UI. Многозадачность, как её видят или как она есть... Процессы не завершаются до конца сразу, а висят какое-то время.
    Ось предназначалась для всех устройств с сенсорным вводом, так что в стандартные desk тоже перекочевало.
    Надеюсь в Win10 будет все же иначе.
    Думаю надо ковырять в сторону настроек оси, это явно не косяк Office.
    Если есть возможность, то можно попробовать поставить на вторую машину с Win8 другой Office (2007/2010) и проверить.
    У нас сервак 2012(ядро win8 без metro-ui) + Office 2010, проблем нет.
    Нашел еще такой совет, но не уверен что это то что нужно, хотя...:
     
  3. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Всегда сначала используйте GetObject, а если объект не получен (будет ошибка, код не помню), тогда уже CreateObject.
     
  4. DamirAstana

    DamirAstana Member

    Регистрация:
    26 май 2014
    Сообщения:
    9
    Симпатии:
    0
    Спасибо за ответы.

    В первую очередь об этом тоже подумали, но:
    1) Если объекта нет, то мы его создаем, получается потом его нужно будет тоже завершать, что опять же не получится, хотя конечно можно один процесс оставить, пусть висит =)
    2) Придется переписывать везде где используется office, а решение нужно сейчас, без изменения программного кода, пока что.

    Насчет win8, думаю так и есть. В инете пару проблем таких встречаются, но толком решения не описаны. Вот найти бы это ПО или службу которая так делает... Тоже есть обычный ноут, с windows 8.1, установили на него office 2013 - процесс завершается после закрытия сразу.
     
  5. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    514
    Симпатии:
    13
    DamirAstana
    после Quit можно (да и наверное нужно) делать Set wdoc = Nothing
     
  6. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    DamirAstana, если не секрет, что вы такое делаете с Word'ом? Мне кажется некорректно "убивать" Word на рабочем месте пользователя, т.к. он мог открыть его самостоятельно и что-то в нём редактировать. А тут вы берёте его и закрываете...
     
  7. DamirAstana

    DamirAstana Member

    Регистрация:
    26 май 2014
    Сообщения:
    9
    Симпатии:
    0
    Ну как бы на процессы пользователя это не влияет. Я убиваю свой созданный процесс.
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    garrick
    Подпроцесс, если быть точнее, причем на каждый созданный документ он свой, если имена файлов разные.
    Основной процесс notes2.exe, подпроцесс winword.exe.
    По логике, если убить все связные лотусовые процессы, то убивается и вызванные подпроцессы.
    Такое можно наблюдать когда открываешь вложения из почты и затем убивать лотусовые процессы: связные процессы закрываются.
    Другой дело когда используешь что-то типа кода, который тут, убивается всё.
     
  9. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Закрывает, но если программно создавать процесс и при этом иметь открытый - это 2 разных процесса.
    Если создать несколько программных процессов (разные переменные Application Object), то они тоже будут разными.
    А вот книги открытые в одном процессе, при его закрытии - закроются все.
     

    Вложения:

    • wordtask2.png
      wordtask2.png
      Размер файла:
      79,8 КБ
      Просмотров:
      14
    • wordtask.png
      wordtask.png
      Размер файла:
      59,8 КБ
      Просмотров:
      14
  11. akat

    akat Lotus team
    Lotus team

    Регистрация:
    16 июн 2010
    Сообщения:
    243
    Симпатии:
    7
    Может это как-то связано с сервисом SuperFetch и включенным ReadyBoost.
    (Сам сейчас проверить не могу, "Виндоуз ИксПи бикоз тугеза" :)
     
  12. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    большинство процессов в виндятке привязано какну к окну (как следует из названия ОС ;) ) м.б. имеет смыл искать процесс по названию окна
     
Загрузка...
Похожие Темы - Проблема Office 2013
  1. c0de3r
    Ответов:
    5
    Просмотров:
    126
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    135
  3. SoulPaladin
    Ответов:
    4
    Просмотров:
    131
  4. Artael
    Ответов:
    1
    Просмотров:
    110
  5. ENSLER
    Ответов:
    0
    Просмотров:
    103

Поделиться этой страницей