Здравствуйте.
Итак.
Есть готовое работающее приложение (как Excel файл) с листом данных и организованным обменом данными с сайтом.
Обмен организован так: Пользователь выбирает позиции и нажимает на кнопку отправить. Макрос отправки составляет строку запроса и делает вызов стороннего скрипта VBS, не дожидаясь от него ответа. таким образом возможно отправить подряд несколько запросов. VBS скрипт делает запрос к сайту и получив ответ делает попытку заполнить определенную ячейку на листе в Excel файле. Если попытка не удачна (Excel занят) ждем некоторое время и снова пытаемся отдать ответ. И так пока не отдадим. В рабочем файле Excel, в свою очередь запущен таймер, по которому проверяются ячейки ответов. Если ответа долго нет, то макрос убивает соответствующий процесс VBS скрипта и запускает новый. Такая себе защита. Такой подход позволил развязать руки пользователю, т.е. он может работать с файлом, а в это время происходит обмен (время между вводом данных). Но как показала практика это не комфортно.
Налицо несколько явных проблем. 1. - Если Excel аварийно закроется, то в системе останутся вечные процессы. 2. - Из за временных нестыковок некоторые запросы могут быть запрошены несколько раз, хотя ответ уже получен, но не успел дойти до адресата. ... + Сложность кода
Идеи
Хочется упростить и разделить код. А именно. Хочется сделать приложение которое будет в фоне обновлять данные. Например пользователь изменил данные в ячейке, макрос change отравил сообщение (я думал через sendMessege) изменить такое поле программе, которая возьмет на себя все заботы про обмену данными и вернет ответ (тоже как сообщение например). А excel прочитает, когда будет готов. Плюс думаю организовать весь код Excel как надстройку.
Для этого
Смотрел в сторону организации программы севера, т.к. хочется консольное приложение.
А теперь просьба
Подскажите в правильном ли направлении я думаю. Может есть какой-то путь, который лучше но я сейчас не вижу.
Спасибо
Итак.
Есть готовое работающее приложение (как Excel файл) с листом данных и организованным обменом данными с сайтом.
Обмен организован так: Пользователь выбирает позиции и нажимает на кнопку отправить. Макрос отправки составляет строку запроса и делает вызов стороннего скрипта VBS, не дожидаясь от него ответа. таким образом возможно отправить подряд несколько запросов. VBS скрипт делает запрос к сайту и получив ответ делает попытку заполнить определенную ячейку на листе в Excel файле. Если попытка не удачна (Excel занят) ждем некоторое время и снова пытаемся отдать ответ. И так пока не отдадим. В рабочем файле Excel, в свою очередь запущен таймер, по которому проверяются ячейки ответов. Если ответа долго нет, то макрос убивает соответствующий процесс VBS скрипта и запускает новый. Такая себе защита. Такой подход позволил развязать руки пользователю, т.е. он может работать с файлом, а в это время происходит обмен (время между вводом данных). Но как показала практика это не комфортно.
Налицо несколько явных проблем. 1. - Если Excel аварийно закроется, то в системе останутся вечные процессы. 2. - Из за временных нестыковок некоторые запросы могут быть запрошены несколько раз, хотя ответ уже получен, но не успел дойти до адресата. ... + Сложность кода
Идеи
Хочется упростить и разделить код. А именно. Хочется сделать приложение которое будет в фоне обновлять данные. Например пользователь изменил данные в ячейке, макрос change отравил сообщение (я думал через sendMessege) изменить такое поле программе, которая возьмет на себя все заботы про обмену данными и вернет ответ (тоже как сообщение например). А excel прочитает, когда будет готов. Плюс думаю организовать весь код Excel как надстройку.
Для этого
Смотрел в сторону организации программы севера, т.к. хочется консольное приложение.
А теперь просьба
Подскажите в правильном ли направлении я думаю. Может есть какой-то путь, который лучше но я сейчас не вижу.
Спасибо