|
13.04.2012, 11:10
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
Проблема повторного открытия 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) Создание лок. копии и т п.
При этом данное окно невидимо и что бы его отобразить пользуюсь диспетчером задач.
Как можно обойти данную проблему (возможно как то открывать документ только для чтения) или хотя бы как то обработать исключение с сообщением пользователю???
|
|
13.04.2012, 11:13
|
|
Просто любитель
|
|
Регистрация: 13.09.2011
Сообщений: 300
|
|
Если он был открыт вашим скриптом и не закрылся, то попробуйте добавить перед Word.quit
Word.Documents(idFile.value).close()
Последний раз редактировалось GuardCat, 13.04.2012 в 11:21.
|
|
13.04.2012, 12:30
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
к сожалению документ был открыт не через скрипт
|
|
13.04.2012, 15:29
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
Друзья если кому интересно нашел следующий выход. Необходимо скрывать документ //Word.Visible=false; только после того как откроешь.
Т.е. с начало:
var oLoadedDocument = Word.Documents.Open(idFile.value);
далее:
Word.Visible=false;
Меняя местами вызовы операторов тем самым, при возникновении вышеописанной ситуации, Диалоговое окно "О уже запущенном документе" будет отображен, и после выбора пункта документ будет обработан и закрыт.
Как оказывается все было просто, однако если у Вас есть еще какие то предложения буду признателен если их приведете.
|
|
13.04.2012, 16:00
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
discribe, создаете объект word, пытаетесь получить документ (на случай, если он открыт), удалось? Работаете дальше, нет, открываете заново.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
13.04.2012, 17:05
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
nerv, под попыткой получить документ, Вы понимаете следующее:
Word.Documents.Open(FileName) ?? Если да то как проверить удалось ли получить документ?
Последний раз редактировалось discribe, 13.04.2012 в 17:13.
|
|
13.04.2012, 17:10
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
discribe, Word.Documents("Имя_документа")
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
13.04.2012, 17:14
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
Ок попробую, спс
|
|
13.04.2012, 17:20
|
Новичок на форуме
|
|
Регистрация: 13.04.2012
Сообщений: 6
|
|
При вызове:
Word.Documents("Имя_документа");
Выдается ошибка:
Ошибка: Неверное имя файла
Для анализа тестируемый код:
Word = new ActiveXObject("Word.Application"); // creates the word object
var perem = Word.Documents(name30);
Word.quit(0);
В чем может быть ошибка ??
|
|
13.04.2012, 18:22
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
discribe, сори, ступил У Вас создается еще один экземпляр приложения, а в нем коллекция Documents изначально пустая. Чтобы получить уже существующий, в vb используется функция GetObject(). Посмотрите в эту сторону, мож получится )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
|
|