powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel parallel job
5 сообщений из 5, страница 1 из 1
Excel parallel job
    #39062270
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет


Ищу способ в фоновом режиме в Excel отрабатывать некие события и изменять ячейки данных . Т.е. нужно вызвать внешнюю программку , которая вернет 1 или 0 в зависимости от результата. Работает программка 30-40 минут и на это время совсем не хочется блокировать Excel.

Какие есть способы в VBA по организации потоков и прочего ?
...
Рейтинг: 0 / 0
Excel parallel job
    #39062300
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDE
...
Рейтинг: 0 / 0
Excel parallel job
    #39062326
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример DDE-клиента на VB6
...
Рейтинг: 0 / 0
Excel parallel job
    #39062667
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmk,

гуд
А чуть подробнее можно ?

как клиента подключать , как ожидать завершение ?
...
Рейтинг: 0 / 0
Excel parallel job
    #39062771
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запустить клиента из Excel можно разными способами, хочешь ч/з WScript.Shell, а хочешь ч/з CreateProcess.
Как происходит взаимодействие - видно из примера. Ожидать завершение - как и любого асинхронного процесса. Исходя из essbase.ruТ.е. нужно вызвать внешнюю программку , которая вернет 1 или 0 в зависимости от результата, клиент после передачи серверу этого единственного результата, завершит свою работу, а серверу нужно продолжить его обработку. В данном случае нужно анализировать наличие этого самого ответа от клиента по событию, например, Worksheet_Calculat
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Worksheet_Calculate()
    If CDate(Range("A1").Value) Like "*12:00:00*" Then
        MsgBox "Пора обедать"
    End If
End Sub

но печаль в том, что DDE не поднимает событие, поэтому, нужно создать формулу, которая использует значение из A1, например, в B1 прописать =A1

Вообще,исходя из этого топика, возможно, стоило бы использовать другой из методов IPC , и если бы задача была освещена шире, наверно, можно было бы найти более подходящее для нее решение.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel parallel job
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]