Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1412 / 878 / 93
Регистрация: 08.02.2017
Сообщений: 3,753
Записей в блоге: 2

Многопоточность в VBA

01.07.2023, 15:39. Показов 8256. Ответов 102

Студворк — интернет-сервис помощи студентам
Почему VBA? Про VB в принципе уже все давно расписано и исследовано за десятки лет. На VBA тема менее популярна, по в принципе понятным причинам, по скольку, там она не сильно так уж и нужна. Мне также в ней нет особой необходимости, просто некоторый интерес прощупать эту тему с точки зрения "простого обывателя", на сколько далеко можно зайти и т.д.
Вообще, говоря, на VBA есть довольно простая и удобная не очень изящная возможность организовать "потоки" за счет запуска нескольких копий приложения, также можно делать на VBS.
Далее простой пример (в файле), назовем "Игра - Останови колобка если сможешь!" ). В примере все не очень оптимально, и нет какого-то полезного шаблона, но как мне кажется хорошо видно работу т.н. маршаллинга, его усточивую работу, даже при не очень, как бы правильной ситации. При запуске множества экземпляров Экселя и их одновременному обращению к одному и тому же объекту, все продолжает работать довольно устойчиво при том, что объектная модель отдельного Экселя "общается" со всеми в одном потоке или точнее из одного потока. Видимо маршаллинг все разруливает.
В данном примере, не мало важно, что рабоает пропуск ошибок и doevents. Если попытаться реализовать подобное с помощью win-api то с этим уже появляются некоторые проблеммки.. и бог весть еще с чем, а вот при работе разных экземпляров Эксель все очень просто.
Вложения
Тип файла: zip Колобок.zip (20.7 Кб, 32 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2023, 15:39
Ответы с готовыми решениями:

VBA → SSMS → VBA. Вызов хранимой процедуры SSMS из VBA с возвратом 2ух и более параметров
Приветствую! Учусь наполнять таблицу SQL из таблицы Excel. Беру таблицу в массив и построчно вызываю хранимку с передачей очередного...

Программа в VBA для проверки гипотез про равенство средних - VBA
В своё время прогулял лекции по VBA, а теперь жалею! Кто может помочь с написанием проги по проверке гипотез про равенство средних?

VBA и Oracle: stored procedure из VBA и сохранение текста в переменной
Добрый день, Кто-нибудь сталкивался с проблемой выполнения функции Oracle, т.н. Oracle stored procedure, и сохранением результата в...

102
Эксперт по электронике
7239 / 3417 / 348
Регистрация: 28.10.2011
Сообщений: 13,462
Записей в блоге: 7
14.07.2023, 00:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от HackerVlad Посмотреть сообщение
создаётся окно в новом потоке без единой API-функции вообще
Функции есть, но скрыты.
Так же как скрыт обработчик событий и callback функции окон.
0
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
14.07.2023, 09:08
Цитата Сообщение от HackerVlad Посмотреть сообщение
Ты мне говорил что нельзя. Ну если и можно то слишком сильно сложно.
С этим модулем можно.

Цитата Сообщение от HackerVlad Посмотреть сообщение
The trick, у тебя создаётся окно в новом потоке без единой API-функции вообще!? как такое возможно!?
Так работает штатная многопоточность в VB6.
0
Вернулся
 Аватар для HackerVlad
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
14.07.2023, 14:24
Цитата Сообщение от The trick Посмотреть сообщение
С этим модулем можно.
Очень классный модуль, спасибо большое, но мне лично непонятен тот проект именно где показывает память каждого процесса, там модель этот необязательно чисто для этой цели вполне подойдёт всего одна функция NtQuerySystemInformation она выдаёт занимаемую память для каждого процесса, как для 32-битного так и для 64-битного и для всех системных тоже.

Добавлено через 7 минут
The trick, но в том проекте мне понравилась самописная функция qSort и не надо CDecl вызывать даже)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2023, 14:24

VBA-проект для создания эл. сообщения в MS Outlook из-под любого VBA-приложения.
Охотно поделюсь этим своим проектом, который можно скачать с http://moscowjobs.narod.ru/mailmngr.html. Вам понадобится WinZip и MS Word...

VBA AutoCad - как снять (изменить) ограничение времени выполнения VBA Макроса?
Столкнулся с проблемой в Автокад 2012 х64 win7 Run-time error(...): Automation error System call failed - возникает если макросы...

VBA SDK. Как включить в проект на VBA конструкторы?
Всем, добрый день! Если кто-то работал с сабжом - не могу понять, как включить в проект на VBA конструкторы, как-то: DataEnvironment,...

Купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко
Поздравьте меня я купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко, могу процитировать нужную Вам справку

Как получить ссылку на VBA-объект Application в DLL, которая привязана к этому VBA-приложению
Т.е. ситуация обычная - имеем DLL, сделанную в VB, которая может быть привязана к MsOffice приложениям - Access,Word,Excel . Как в этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
103
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru