Скрипт WWPoke

Интегрованная среда разработки (IDE) промышленных приложений.

Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 2:02 pm

Создал новую тему, так как при открытии старой антивирус ругается (боты безобразничают)
Мне нужно записать данные в определенную ячейку таблицы Excel. Написал вот такой скрипт:
Код: Выделить всё
datetime= $DateString;
IF InfoAppActive(InfoAppTitle("excel")) == 1 THEN
ActivateApp(InfoAppTitle("excel"));
ELSE
StartApp "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE C:\Report\18.11.2014.xlsx";
ENDIF;

Status = WWPoke("excel","[18.11.2014.xlsx]Sheet1", "r2c2", datetime);

И ничего в данную ячейку не записывается. В Excel'e сделал стиль ссылок r1c1, переименовал "Лист1" в "Sheet1" (это сделал руками, может в настройках нужно как то поменять, а не переименовывать лист вручную?) В чем может быть проблема?
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Вт ноя 18, 2014 2:14 pm

Запускаете Excel и проверяете скрипт.
Не запускаете Excel и проверяете (Excel должен открыться)
Анализируете логи SMC
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 2:23 pm

Запускаете Excel и проверяете скрипт.

Не понял :)

Скрипт повесил на кнопку, нажимаю кнопку, запускается Excel, открывает этот файл, но в данную ячейку ничего не записывается.
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Вт ноя 18, 2014 3:07 pm

Значит скрипт на открытие файла работает, но не работает WWPoke().
Надо посмотреть логи SMC.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 3:13 pm

Вот что в логах после запуска скрипта.
23219627 18.11.2014 14:10:40 7064 2748 Info WWSCRIPT Poke -- Could not connect: 1000080/C001/C002 : excel|[18.11.2014.xlsx]Sheet1!r2c3 18.11.2014. Error: Client could not establish conversation
Почему то не могут они пообщаться. Что-то не так?
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 3:18 pm

Вот скрин Excel'я
ИзображениеИзображение
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Вт ноя 18, 2014 3:35 pm

Diogen писал(а):Status = WWPoke("excel","[18.11.2014.xlsx]Sheet1", "r2c2", datetime);

Что это такое в Вашем скрипте? Попробуйте для начала прописать любую троку. Может, несовпадение типов datetime и типа для ячейки?
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 3:49 pm

Вот
Код: Выделить всё
datetime= $DateString;

Просто строку тоже пробовал, вбивал "asd" вместо datetime.
Формат ячейки стоит "обычный", но я так же пробовал и "текстовый" ставить.
Последний раз редактировалось Diogen Вт ноя 18, 2014 3:54 pm, всего редактировалось 1 раз.
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Вт ноя 18, 2014 3:50 pm

А ячейка настроена на тип Text ?
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 3:54 pm

Формат ячейки стоит "обычный", но я так же пробовал и "текстовый" ставить.
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Вт ноя 18, 2014 4:29 pm

Скрипт рабатывает. Но при повторном нажатии :) Т.е. когда Excel уже открыт.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 4:44 pm

Хм, странно :shock: Попробовал, действительно :D
Но мне так не пойдет, вообще "тихо" писать в файл хотелось бы. Неужели средств таких нет? А то сидит оператор, вдруг открывается Excel на экран, чего то там пишет и обратно закрывается и так каждые два часа :mrgreen:
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Diogen » Вт ноя 18, 2014 5:12 pm

Кстати, если сделать закрытие Excel через
WWControl (InfoAppTitle("excel"), "Close");

то выводится запрос сохранять ли изменения в файле, а как то можно сделать, чтобы закрывался с сохранением не спрашивая?
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Ср ноя 19, 2014 12:50 am

Автоматизация Excel для внешних приложений

Подобно вызову внешних COM DLL, Excel сам может являться объектом автоматизации для других программ. Например, вы можете вызывать и управлять рабочей книгой с помощью vbs-скриптов. Например, создайте текстовый файл следующего содержания:

Set oExcelApp = CreateObject("Excel.Application")
oExcelApp.Visible = True
Set oWorkbook = oExcelApp.Workbooks.Add
Set oWorksheet = oWorkbook.Worksheets.Add
oWorksheet.Cells(1,1)="Hello"

Сохраните этот файл с расширением vbs, а затем откройте. При успешном запуске будет открыт Excel, создана рабочая книга и лист, на котором появится текст «Hello» в верхней левой ячейке. Аналогичным образом можно создавать очень сложные программы, управляющие Excel-файлами. При переносе кода в vbs-скрипт (или другое приложение) первоначально удобнее его создавать и отлаживать код в редакторе VBA самого Excel – в нем имеется полная информация о синтаксисе методов и свойств встроенных объектов. В связи с этим хорошей практикой при программировании на VBA является использование полных путей доступа к объектам: например, вместо ActiveWorkbook прописывать Application.ActiveWorkbook. Такой стиль программирования избавит вас от скрытых ошибок при переносе кода в любые другие приложения.

Спёрто тут:
http://www.excelfin.ru/index.php/articl ... theory-vba
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Скрипт WWPoke

Сообщение Steelman63 » Ср ноя 19, 2014 1:25 pm

Diogen писал(а): "тихо" писать в файл хотелось бы


штатными средствами интача можно тихо писать из скриптов в текстовые файлы, например .CSV
все что больше - интеграция с чем-либо(например Dream Report)
Steelman63
 
Сообщения: 313
Зарегистрирован: Ср авг 29, 2012 3:42 pm

Re: Скрипт WWPoke

Сообщение Diogen » Чт ноя 20, 2014 11:57 am

Генератор зла писал(а):Автоматизация Excel для внешних приложений

Да, сейчас как раз разобрался с HistData, при работе создается .CSV файл с нужными мне значениями. Осталось его только "причесать", вытащить из него эти значения и расставить в Exsel'e красиво. Вчера весь день убил, чтобы обойтись для этого без макросов, но видимо придется в макросах разобраться и написать свой под это дело.
В ITDataManagment на странице 240 написано:
Вы можете написать макрос в Excel для интерфейса в
HistData . Программа HistData отвечает на функции INITIATE, POKE и TERMINATE в пределах макроса . Функция POKE с зарезервированным словом (пункт внутренней базы данных) устанавливает параметры, которые определяют запрос . После того, как запрос правильно указан, запустите макрос для
запроса выбранных исторических данных из файла HistData . Вы можете записать макрос на Excel для сопряжения с HistData .

Правильно ли я понимаю, что нужно написать скрипт VBS(макрос), по команде из InTouch его запустить, а он создаст файл Excel с расставленными данными из .CSV файла?

Steelman63 писал(а):
Diogen писал(а): "тихо" писать в файл хотелось бы


штатными средствами интача можно тихо писать из скриптов в текстовые файлы, например .CSV
все что больше - интеграция с чем-либо(например Dream Report)

К сожалению, лицензии на Dream Report нет, да и слишком наворочена она, мне же простые двухчасовки надо снимать, а не крутые отчеты ваять :)
Diogen
 
Сообщения: 353
Зарегистрирован: Чт мар 27, 2014 6:35 pm

Re: Скрипт WWPoke

Сообщение Генератор зла » Чт ноя 20, 2014 12:32 pm

Steelman63 писал(а):штатными средствами интача можно тихо писать из скриптов в текстовые файлы, например .CSV
все что больше - интеграция с чем-либо(например Dream Report)

Не всё так безнадёжно ;)
Вариантов ... несколько.
1. HistData
2. Набор библиотек WWTechSupport
3. Если InTouch создаётся из под IDE, то в нём доступно использование ф-ций .Net в скриптах. Там можно накрутить многое.
4. Использование VBA в самом Excel. Можно же из самого Excel посредством DDERequest требовать данные от InTouch.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm


Вернуться в Development Studio & FactorySuite A²

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

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

cron