Проблема повторного открытия Word в фоновом режиме
Доброго времени суток!
Задача состоит в том что бы обработать word документ в фоновом режиме. Данная задача мною решается сл образом: //*************// Word = new ActiveXObject("Word.Application"); // creates the word object Word.Visible=false; // doesn't display Word window var oLoadedDocument = Word.Documents.Open(idFile.value); // specify path to document Doc = Word.Documents(idFile.value).content; Word.quit(0); //************// Проблема появляется когда документ Word с именем из idFile.value уже был уже открыт. Выскакивает окно "Файл уже используется" и выбор пунктов: 1) Открыть только для чтения 2) Создание лок. копии и т п. При этом данное окно невидимо и что бы его отобразить пользуюсь диспетчером задач. Как можно обойти данную проблему (возможно как то открывать документ только для чтения) или хотя бы как то обработать исключение с сообщением пользователю??? |
Если он был открыт вашим скриптом и не закрылся, то попробуйте добавить перед Word.quit
Word.Documents(idFile.value).close() |
к сожалению документ был открыт не через скрипт:)
|
Друзья если кому интересно нашел следующий выход. Необходимо скрывать документ //Word.Visible=false; только после того как откроешь.
Т.е. с начало: var oLoadedDocument = Word.Documents.Open(idFile.value); далее: Word.Visible=false; Меняя местами вызовы операторов тем самым, при возникновении вышеописанной ситуации, Диалоговое окно "О уже запущенном документе" будет отображен, и после выбора пункта документ будет обработан и закрыт. Как оказывается все было просто, однако если у Вас есть еще какие то предложения буду признателен если их приведете. |
discribe, создаете объект word, пытаетесь получить документ (на случай, если он открыт), удалось? Работаете дальше, нет, открываете заново.
|
nerv, под попыткой получить документ, Вы понимаете следующее:
Word.Documents.Open(FileName) ?? Если да то как проверить удалось ли получить документ? |
discribe, Word.Documents("Имя_документа")
|
Ок попробую, спс
|
При вызове:
Word.Documents("Имя_документа"); Выдается ошибка: Ошибка: Неверное имя файла Для анализа тестируемый код: Word = new ActiveXObject("Word.Application"); // creates the word object var perem = Word.Documents(name30); Word.quit(0); В чем может быть ошибка ?? |
discribe, сори, ступил :) У Вас создается еще один экземпляр приложения, а в нем коллекция Documents изначально пустая. Чтобы получить уже существующий, в vb используется функция GetObject(). Посмотрите в эту сторону, мож получится )
|
Часовой пояс GMT +3, время: 23:58. |