Андрей Кучумов
Андрей Кучумов личный блог
19 сентября 2012, 18:09

Роботы на VB (Excel)

Использую для рутинных операций робота, написанного в Excel под Альфу.
Поскольку пока трейдинг не является моим единственным источником дохода
встал вопрос удалённого управления роботом и через него терминалом, т.к.
войти под одним логином с разных компов нельзя — первое соединение
терминалится.
Для реализации удалённого управления в Excel завёл источник данных —
html-страничку, т.к. у меня есть свой домен.
Собственно «страничка» — это лишь буквенно-цифровой код из 10 символов,
который забирает Excel через «Подключение к источнику данных».
Дальше робот этот код «разбирает» на команды.
Для ввода кода написал простую html+php форму, которая сохраняет
управляющик код в страничку. Так что можно даже с телефона ввести
новую настройку робота.
Но столкнулся с проблемой, что при частом рефреше «Подключения» в Excel
выпадают ошибки:
Роботы на VB (Excel)
или
Роботы на VB (Excel)
Что завешивает робот.
Посоветуйте как перехватывать такие ошибки в Execl?
25 Комментариев
  • sander
    19 сентября 2012, 18:14
    Наши руки не для скуки…
  • sander
    19 сентября 2012, 18:14
    Месье знает толк в извращениях…
  • krolix
    19 сентября 2012, 18:15
    Привет!
    Извини, что не совсем по теме поста.
    А данные от экселя нормально передаются?
    Если не сложно, то не поделишься файлом?
    Если там какое-то ноу-хау, то во сколько его оценишь?)
    Ковырял образец альфовский, но у меня что-то так и не заработало.
    Спасибо!
      • krolix
        19 сентября 2012, 18:36
        Андрей Кучумов, помнится, назывался alfa_trade_v006 (1 скорее всего).

        Система своя, экспорт котировок из терминала настроил, вычисления тоже. Не понял, как можно там сделки совершать по результатам закрытия часовиков.

        Второй вроде тоже видел, но там, кажется, только зашитые алгоритмы захода в сделки, которые даром не нужны.
  • _sg_
    19 сентября 2012, 18:16
    про Threading почитайте
  • Evg_gg_gg
    19 сентября 2012, 18:37
    вводите событие он error goto и опять сначала
    • _sg_
      19 сентября 2012, 18:40
      Evg_gg_gg, у него при этом весь стек переполнится от эксепшенов. Ему надо написать полноценное хотя бы 2-х поточное приложение.
  • _sg_
    19 сентября 2012, 20:11
    Мне трудно судить «издалека» что у Вас там происходит. На мой взгляд у Вас робот обрабатывает что-то и обновляет данные в ячейках в фоновом режиме. В это время извне приходит запрос на изменение каких-то параметров его (робота) работы. Это происходит во время обновления данных. Эксель Вам выдает ошибку. Следовательно, необходимо разнести эти операции по разным потокам: Один поток обрабатывает и обновляет информацию. Другой поток «слушает» и обрабатывает внешние запросы.
  • _sg_
    19 сентября 2012, 20:46
    То есть Вы в цикле сначала делаете Refresh, а потом пытаетесь читать обновляемую ячейку в этом же цикле?
    Это неправильно. Нужно написать обработчик события не помню как точно называется в Экселе по-моему OnChanged. Это обработчик будет вызываться когда значение в ячейке уже изменилось, то есть когда получен новый Ваш Код в результате Refresh'a. То есть Вы в цикле делаете ТОЛЬКО Refresh + Задержка. При этом в ячейку записывается Код. Но Читаете этот Код из ячейки по событию «OnChanged» в обработчике этого события, а не в цикле в котором Refresh.
    • _sg_
      19 сентября 2012, 20:51
      _sg_, Если Refresh делает сам Эксель по таймеру, тогда Вам необходимо написать только обработчик события «OnChanged», в котором и будете читать Ваш код.
  • _sg_
    19 сентября 2012, 21:44
    Ну Вы даете. Прогуглите про события в Екселе. Думаю найдете килограммы Примеров. А Я вначале думал, что у Вас там навороченная система, хотел Вас нацелить на VSTO, потоки итд. Теперь понятно, что в данном случае это не нужно.
  • EAGor
    19 сентября 2012, 23:07
    Почему удаленку не юзаешь?
      • EAGor
        20 сентября 2012, 07:30
        Андрей Кучумов, или mstsc

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн