Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема повторного открытия Word в фоновом режиме (https://javascript.ru/forum/misc/27447-problema-povtornogo-otkrytiya-word-v-fonovom-rezhime.html)

discribe 13.04.2012 11:10

Проблема повторного открытия 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) Создание лок. копии и т п.
При этом данное окно невидимо и что бы его отобразить пользуюсь диспетчером задач.

Как можно обойти данную проблему (возможно как то открывать документ только для чтения) или хотя бы как то обработать исключение с сообщением пользователю???

GuardCat 13.04.2012 11:13

Если он был открыт вашим скриптом и не закрылся, то попробуйте добавить перед Word.quit
Word.Documents(idFile.value).close()

discribe 13.04.2012 12:30

к сожалению документ был открыт не через скрипт:)

discribe 13.04.2012 15:29

Друзья если кому интересно нашел следующий выход. Необходимо скрывать документ //Word.Visible=false; только после того как откроешь.
Т.е. с начало:
var oLoadedDocument = Word.Documents.Open(idFile.value);

далее:
Word.Visible=false;

Меняя местами вызовы операторов тем самым, при возникновении вышеописанной ситуации, Диалоговое окно "О уже запущенном документе" будет отображен, и после выбора пункта документ будет обработан и закрыт.

Как оказывается все было просто, однако если у Вас есть еще какие то предложения буду признателен если их приведете.

nerv_ 13.04.2012 16:00

discribe, создаете объект word, пытаетесь получить документ (на случай, если он открыт), удалось? Работаете дальше, нет, открываете заново.

discribe 13.04.2012 17:05

nerv, под попыткой получить документ, Вы понимаете следующее:
Word.Documents.Open(FileName) ?? Если да то как проверить удалось ли получить документ?

nerv_ 13.04.2012 17:10

discribe, Word.Documents("Имя_документа")

discribe 13.04.2012 17:14

Ок попробую, спс

discribe 13.04.2012 17:20

При вызове:

Word.Documents("Имя_документа");

Выдается ошибка:
Ошибка: Неверное имя файла

Для анализа тестируемый код:

Word = new ActiveXObject("Word.Application"); // creates the word object
var perem = Word.Documents(name30);
Word.quit(0);

В чем может быть ошибка ??

nerv_ 13.04.2012 18:22

discribe, сори, ступил :) У Вас создается еще один экземпляр приложения, а в нем коллекция Documents изначально пустая. Чтобы получить уже существующий, в vb используется функция GetObject(). Посмотрите в эту сторону, мож получится )


Часовой пояс GMT +3, время: 23:58.