Проблема с Excel

Вопросы, не попадающие в другие разделы.

Проблема с Excel

Сообщение Blaze » Вт дек 01, 2009 1:38 pm

Требуется скопировать файл, открыть его и передать туда данные. Делаю вот что.

На кнопку записываю команду:
FileCopy( "c:\Книга1.xls", "c:\Книга2.xls", "DTag" );

Далее обрабатываю скрипт на изменение. Без этого нельзя, ибо копирование занимает некоторое время.

IF DTag == 1 THEN

IF InfoAppActive(InfoAppTitle("excel")) == 1 THEN
ActivateApp(InfoAppTitle("excel"));
ELSE
StartApp "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE c:\Книга2.xls";
ENDIF;

Mtag = "abs";
WWPoke("excel","[Книга2.xls]Лист1", "r1c1",Mtag);

DTag = 0;

ENDIF;

Проблема в том, что при открытии файла управление передается в excel и скрипт видимо прекращает работу. По крайней мере wwPoke не срабатывает. Поменять этот кусочек текста и вышестоящий тоже нельзя, ибо wwPoke работает лишь с открытым документом.

Как сделать так, чтобы файл открывался, но скрипт продолжал выполняться? Или чтобы можно было записывать данные в ячейки excel, не открывая файл?
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение Spaun » Чт дек 03, 2009 9:10 pm

Может нужно сначала открыть DDE-канал между Excel и InTouch, а только потом посылать данные ?
зы: попробуйте сначала такую строчку:

WWPoke("c:\Книга2.xls","Лист1", "r1c1",Mtag);
Spaun
 
Сообщения: 105
Зарегистрирован: Вс ноя 29, 2009 10:35 am

Сообщение Blaze » Пт дек 04, 2009 7:29 am

wwPoke работает только когда приложение запущено. Заранее оно запущено быть не может, ибо документ еще надо создать. А при запуске приложения, оно активируется, т.е. управление передается ему.
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение Klinkmann_Msk » Пт дек 04, 2009 7:51 am

To Blaze:
Можно попробовать интегрировать в окно InTouch-а ActiveX Microsoft IE и открывать xls-файл в нём. Тогда управление (по идее) должно остаться у InTouch и скрипт продолжит работу.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Blaze » Пт дек 04, 2009 9:25 am

Не совсем понял, что это за компонент такой?
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение Klinkmann_Msk » Пт дек 04, 2009 2:39 pm

To Blaze:
InTouch Maker, Configure-Wizard/ActiveX Installation, закладка ActiveX Control Installation. Найти и установить ActiveX Microsoft Web Browser. Пользоваться им через кнопку визардов (шутовской колпак).
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение Blaze » Пт дек 04, 2009 3:01 pm

Может так получиться, что этот компонент отсутствует в списке установки?
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение VoFFka » Вс дек 06, 2009 3:57 am

Можно сделать так
На кнопку посадить
IF InfoAppActive(InfoAppTitle("excel")) == 1 THEN
Mtag = "abs";
WWPoke("excel","[Книга2.xls]Лист1", "R1C1",Mtag);
DTag = 0;
ELSE
FileCopy( "c:\Книга1.xls", "c:\Книга2.xls", "DTag" );
ENDIF;
Далее в окне кнопки Widow Script выбрать "While showing" выставить время повтора 1000 кинуть это
IF DTag == 1 THEN
IF InfoAppActive(InfoAppTitle("excel")) == 1 THEN
ActivateApp(InfoAppTitle("excel"));
ELSE
StartApp "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE c:\Книга2.xls";
ENDIF;
ENDIF;
Потом создать Condition script на тэг Dtag настроить на выполнение While True время 5000 и записать это выражение
Mtag = "abs";
WWPoke("excel","[Книга2.xls]Лист1", "R1C1",Mtag);
DTag = 0;
и все должно работать....
VoFFka
 
Сообщения: 12
Зарегистрирован: Пн ноя 02, 2009 8:41 pm

Сообщение Blaze » Пн дек 07, 2009 7:55 am

Да так работает, спасибо.
Только возник вопрос. Если у меня в окошке на Widow Script для "While showing" выбрано 1 Msec, то можно ли дополнительно как-то поставить 1000? Или возможно только одно значение для одного окошка?
Blaze
 
Сообщения: 66
Зарегистрирован: Пн июн 23, 2008 6:34 pm

Сообщение Klinkmann_Msk » Пн дек 07, 2009 8:02 am

Blaze писал(а):Может так получиться, что этот компонент отсутствует в списке установки?

Ну это вряд ли :) Разве что IE отсутствует в ОС.
Klinkmann_Msk
 
Сообщения: 819
Зарегистрирован: Пт сен 18, 2009 10:12 am

Сообщение VoFFka » Вт дек 08, 2009 5:59 am

Поставить два значения "While Showing" нельзя.....а еще эксперементально установлено что значение меньше чем 100 Msec не выполняется...Можно установить 100.......
VoFFka
 
Сообщения: 12
Зарегистрирован: Пн ноя 02, 2009 8:41 pm

Сообщение Dimis » Вт дек 08, 2009 7:38 am

"Может нужно сначала открыть DDE-канал между Excel и InTouch, а только потом "
посылать данные ? "
По-моему , так и есть. До функции Poke вроде бы должна быть еще какая то функция иницилизирующая DDE-соединение.
В эксель не пробовал,но вот из имитатора (DDE - сервера ) в InTouch (DDE- клиент) до функции Poke точно была функция создающая соединение. Щас уже и не вспомню какая.
PS: cервер писался на Pytone. Надо глянуть как в Quick Script -е с этим обстоят дела.)
Dimis
 
Сообщения: 8
Зарегистрирован: Ср мар 04, 2009 6:10 pm


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

cron