Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.04.2012, 11:10
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 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) Создание лок. копии и т п.
При этом данное окно невидимо и что бы его отобразить пользуюсь диспетчером задач.

Как можно обойти данную проблему (возможно как то открывать документ только для чтения) или хотя бы как то обработать исключение с сообщением пользователю???
Ответить с цитированием
  #2 (permalink)  
Старый 13.04.2012, 11:13
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

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

Последний раз редактировалось GuardCat, 13.04.2012 в 11:21.
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2012, 12:30
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 13.04.2012
Сообщений: 6

к сожалению документ был открыт не через скрипт
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2012, 15:29
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 13.04.2012
Сообщений: 6

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

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

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

Как оказывается все было просто, однако если у Вас есть еще какие то предложения буду признателен если их приведете.
Ответить с цитированием
  #5 (permalink)  
Старый 13.04.2012, 16:00
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

discribe, создаете объект word, пытаетесь получить документ (на случай, если он открыт), удалось? Работаете дальше, нет, открываете заново.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 13.04.2012, 17:05
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 13.04.2012
Сообщений: 6

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

Последний раз редактировалось discribe, 13.04.2012 в 17:13.
Ответить с цитированием
  #7 (permalink)  
Старый 13.04.2012, 17:10
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

discribe, Word.Documents("Имя_документа")
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #8 (permalink)  
Старый 13.04.2012, 17:14
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 13.04.2012
Сообщений: 6

Ок попробую, спс
Ответить с цитированием
  #9 (permalink)  
Старый 13.04.2012, 17:20
Новичок на форуме
Отправить личное сообщение для discribe Посмотреть профиль Найти все сообщения от discribe
 
Регистрация: 13.04.2012
Сообщений: 6

При вызове:

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

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

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

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

В чем может быть ошибка ??
Ответить с цитированием
  #10 (permalink)  
Старый 13.04.2012, 18:22
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск