Нафига Excel ?
Не проще ли было для получения данных из инета состряпать dll, которую затем использовать как угодно, например для создания консольного приложения - вывода данных в stdout и дальнейшего пихания этих данных непосредственно в текстовый файл прямо из командного скрипта без всяких excel'ей?
На спредшите есть одна единственная формула (от Bloomberg Add-in)
=BDP("MSFXCAD Index", "PX_LAST"). Если запустить Excel, то это хозяйство соединяется с Bloomber терминалом и по инет получает одно число. Может занять 10-20 секунд, пока значение формулы будет получено. Надо сделать следующее:
1) запустить Excel из командного файла (например, start excel myfile.xls /e)
2) Excel должен получить данные (обновить значение формулы), записать это значение в текстовый файл (типа, "2009-09-04", "1.1094").
3) автоматически закрыться.
Сделал так:
WorkBook_On_Open :
1) Проверяем пока значение в ячейке с формулой <> "#N/A ...."
2) Пишем в файл значение ячейки с формулой
3) Application.Quit
Результат - не работает. В файле постоянно "#N/A ...." вместо данных.
Такое ощущение, что пока исполняется код WorkBook_On_Open, обновление формул блокировано. Значение (вместо "#N/A ...." ) получается только по выходу из WorkBook_On_Open. Если же прямо из WorkBook_On_Open вызвать Application.Quit, то в файле оказывается "#N/A ...." .
Как быть?
Done using Application.AfterCalculate Event. Thanks to everybody!08.09.09 18:17 Автор: void <Grebnev Valery> Статус: Elderman
> 1) запустить Excel из командного файла (например, start > excel myfile.xls /e) var xl = new ActiveXObject("Excel.Application");
> 2) Excel должен получить данные (обновить значение > формулы), записать это значение в текстовый файл (типа, > "2009-09-04", "1.1094"). Точно не помню, но здесь нужно открыть Workbook из файла, взять первый Worksheet, и проверять в цикле нужное значение через Cell(...).Value2.
У WSH есть объект WScript, у которого в частности есть Sleep (чтоб не сильно нагружать проц бестолковым поллингом)
> 3) автоматически закрыться. xl.Quit();
> Как быть? Если не разберешься сам - могу поковыряться. Думаю такой вариант будет работать, потому как скрипт работает совершенно асинхронно от COM-сервера (собственно самого excel.exe).
В принципе да, спасибо. Хорошая идея сама по себе. Попробую,...07.09.09 00:56 Автор: void <Grebnev Valery> Статус: Elderman
Нафига Excel ?
Не проще ли было для получения данных из инета состряпать dll, которую затем использовать как угодно, например для создания консольного приложения - вывода данных в stdout и дальнейшего пихания этих данных непосредственно в текстовый файл прямо из командного скрипта без всяких excel'ей?
То С API которое даёт Bloomberg - почему-то даёт всё, кроме...05.09.09 17:59 Автор: void <Grebnev Valery> Статус: Elderman
> Нафига Excel ? > Не проще ли было для получения данных из инета состряпать > dll, которую затем использовать как угодно, например для > создания консольного приложения - вывода данных в stdout и > дальнейшего пихания этих данных непосредственно в текстовый > файл прямо из командного скрипта без всяких excel'ей? То С API которое даёт Bloomberg - почему-то даёт всё, кроме MSFXCAD Index (написано другим человеком). Excel даёт всё. У меня достаточное ограниченное время (манагеры не станут ждать просто попросят завтра не приходить) - некогда копать, почему API не работает в этом случае.
Да елки-палки!... Неужели не посмотреть в template как реализован вызов API функций в VBA???06.09.09 01:02 Автор: Den <Денис Т.> Статус: The Elderman Отредактировано 06.09.09 01:04 Количество правок: 1