|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
|
Изоляция приложений с UserForm (как скрыть Excel и показать только UserForm без костылей с отслеживанием книг)11.04.2026, 08:08. Показов 3228. Ответов 39
Метки нет (Все метки)
Когда я начал делать UserForm-ы в VBA, у меня возник очевидный вопрос: а как скрыть сам Excel и оставить на экране только форму? Чтобы визуально получилось что-то похожее на обычное десктопное приложение с GUI, а не на "макрос в таблице".
На различных сайтах и форумах все решения которые попадались, крутились вокруг Application.Visible = False плюс какие-то схемы отслеживания открытых книг. В теории звучит как-бы интуитивно понятно, но как только начинаешь такую схему рассматривать, то понимаешь, что всё держится на костылях и догадках: "если пользователь откроет вторую книгу — сделаем то-то, если закроет — то-то". Проще говоря, все возможные сценарии просто невозможно обработать. И отдельно неочевидный момент: запуск более одной такой книги с UserForm — это уже сам по себе потенциальный конфликт, потому что они "дерутся" за один и тот же Application.Visible. То есть решение не масштабируемое + есть ещё момент, который в форумных разборах почему-то вообще не упоминают: пока в книге или в UserForm работает какой-то макрос, всё остальное блокируется или конфликтует. Даже если мы говорим про самый простой сценарий — одна книга, одна форма — схема с отслеживанием уже ломается. То есть задачу пытались решить в лоб, без рассмотрения возможных проблем и потенциала для масштабируемости! Не архитектурный подход (объективно)! Тогда я начал думать, что с этим вообще можно сделать и разбираясь с задачей, я задумался о том, что нужно всю логику изолировать каким-то образом, потому что запуск нескольких макросов просто будет невозможен (например, макрос в одной книге и активная UserForm со своими макросами - конфликт). И я как раз наткнулся на метод New Application или CreateObject("Excel.Application"). До этого момента я про него просто не знал, ведь на тот момент я увлекался IT всего три года, и далеко не всё успевал узнавать, но осознав, что он делает, интуитивно сразу пришла мысль о том, что надо просто его вызвать и уже в нём запускать книгу с UserForm! Из этой же идеи и одной строчки кода потом и вырос весь VBD_Kit_Interface_SDI. После нескольких дней обдумывания и реализации (~3-4 дня), всё получилось. Оказалось не всё так просто, но всё же реализуемо! С точки зрения пользователя происходящее выглядит абсолютно обычно: он кликает по файлу — видит форму. Поведение ровно такое, как при простом Application.Visible = False + UserForm.Show True. Но под капотом книга "мигрирует" из основного Excel пользователя в свой собственный изолированный процесс и живёт уже там. Именно поэтому решение масштабируется: сколько бы таких файлов пользователь ни открыл, каждый оказывается в своём Application и ни с кем не конфликтует. А обычные таблицы, которые параллельно открыты у пользователя в его основном Excel или будут открыты, вообще никак не затрагиваются — они физически в другом процессе. Всё лишь упирается в ресурсы ОС Windows. Критика приветствуется. P.S. Если у кого-то была похожая задача и своё решение — интересно было бы сравнить подходы, т.к. мы видим то, что лежит в открытом доступе, далеко не всегда отражает то, что реально придумано.
1
|
|
| 11.04.2026, 08:08 | |
|
Ответы с готовыми решениями:
39
Отслеживание событий в userform и запись в теблицу Как вместе с заданной (и только с ней) книгой Екселя открывались еще несколько скрытых книг Защита листа Excel, чтобы все изменения в файле осуществлялись только с UserForm |
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
||||
| 13.04.2026, 04:19 [ТС] | ||||
|
Ну чтож, начинаем:
Представьте 3 файла .exe на Delphi с GUI (на VCL). Если Вы все три запустите, то у Вас получится 3 независимых процесса в Windows, каждый который не конфликтует с друг другом (изоляция на уровне процессов OS). Теперь представьте 3 файла Excel с GUI на UserForm. Если Вы все 3 запустите, то они все будут открыты в одном процессе Excel и если хоть в одной форме запустите макрос (нажмёте кнопку), то все остальные формы заблокируются, так как VBA в Excel - однопоточный! Моё решение делает так, что каждая книга Excel запускается в отдельном процессе и работает "из-коробки", то есть пользователю ничего устанавливать не нужно и он может скидывать файл другому человеку и ему также ничего устанавливать не нужно! Всё! Решение портабельно и не ломает основную сессию Excel, в которой у пользователя открыты его книги или могут быть открыты (это кстати одна из самых главных проблем, которую нужно было решить)! Если у Вас до сих пор стоит вопрос, а зачем это нужно, значит скорее всего Вы живете в стереотипном мире, где C++ это база, где чтобы что-то "ломать", нужно знать Assembler и прочее. В мире каждый день с использованием Excel и VBA решается множество задач и если Вы этого не делаете, то это не значит, что никто это не делает! Также работает и в обратную сторону, но в конце концов мы в 2026 году обсуждаем технологию, которая официально мертва более 10 лет! Это как бы что-то должно значить... Добавлено через 22 минуты 000d60, каким образом моё решение нарушает лицензию? Используется только встроенный функционал! Вы о чём вообще? ---- markiza-inc, Вот на вашем примере, Вы сказали, что: Добавлено через 1 минуту И попрошу заметить, я опубликовал решение и описал, как было всё на самом деле! Поднялась дискуссия, и эти сообщения - это ответы на заданный тон дискуссии! Я был готов к критике решения в плане работы механизма и предложенные альтернативы, но Вы сами увели в сторону: "а зачем это нужно и прочее", тем самым обесценив чужую работу и показав, что не особо то и понимаете о чём речь! Это Ваше мнение и я не в обиде, но не стоит обижаться на моё (даже если Вы увидите в 90-95% этих теоретиков себя)! Как говориться, фактам плевать на чувства!
0
|
||||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
||
| 13.04.2026, 10:18 | ||
|
Вернитесь в начало темы и прочтите, наконец, мой вопрос.
0
|
||
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
||
| 13.04.2026, 11:06 [ТС] | ||
|
Jamaica, вы цитируете:
В чём вопрос то? Можем попробовать так (используем принцип "Пяти вопросов?") 1) Зачем скрывать Excel и показать форму? Потому что есть задачи, которые требуют только UserForm и не требуют открытый Excel. 2) Почему есть такие задачи? Потому что людям не всегда удобно работать с таблицей и иногда в GUI удобнее навигация для определенного рода задач и на фоне Excel будет только мешать (пример проекта в видео приводил на Rutube). 3) Зачем парится, если можно взять язык с GUI? 1. Потому что во многих конторах безопасники просто не позволят сделать так, чтобы ты смог запустить сторонний .exe. 2. Не все задачи решаемы через сторонние языки и если данные условно хранят в Excel, то зачем костыли, если есть VBA! Использование других языков и будет костылём! Этого кстати многие не могут понять! В идеальном мире с неограниченным количеством времени на решение задачи может быть и использование стороннего языка было бы выгоднее, но не в нашем мире, где от тебя требуют сделать сегодня то, что должно было быть сделано 2 дня назад! 4) Зачем тогда создавать отдельный процесс, почему нельзя держать формы в одном процессе и работать с ними? Потому что архитектурно такая работа не предполагалась и в реальности всё сломается при малейшем чихе! 5) Зачем я всё это объясняю? Потому что искренне хочу помочь человеку разобраться, и перейти к более технической части, а не "Зачем это и прочее"! Я могу чего-то не понимать, направьте меня и дайте более развёрнутый вопрос! Искренне не понимаю, что Вы хотите узнать, т.к. на Ваш вопрос я считаю что ответил! Интересует конкретные задачи???
0
|
||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
|
| 13.04.2026, 12:11 | |
|
0
|
|
|
930 / 257 / 100
Регистрация: 21.10.2012
Сообщений: 621
|
|||
| 13.04.2026, 13:58 | |||
|
Zeus_0x01, я не планировал Вас обидеть или оскорбить чем-либо.
Спецы с хорошим опытом не прыгают от восторга, хлопая в ладошки, и крича "Я, Гений!". А просто переходят к решению новой задачи. Я не критикую Вашу работу, другие форумчане уже её посмотрели и оценили. Мне этого достаточно. Вы просто как-то слишком эмоционально отреагировали на то, что я назвал Вас новичком. Странно, при том, что Вы сами написали что занимаетесь программированием не очень давно, в этой теме или в другой, не важно. Я первым своим постом в этой теме поддержал Вашу идею, и немного прояснил в чём её суть. Сам пользуюсь формами Excel часто, поэтому прекрасно понимаю эту тему. Поверьте, я уже давным-давно не теоретик из Ваших 90-95 %, а Вы пока ещё там, и об этом говорят Ваши эмоции и восторги, приведенные выше в этом посте. Но это не умаляет Ваши способности, не нужно так реагировать но чужое мнение. Ещё раз посмотрите пость №24 и найдите себя !
2
|
|||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
||
| 13.04.2026, 16:27 | ||
|
что одна UserForm напрочь глушит другую? Мне на ум приходит только выполнение какого-то длительного цикла.
0
|
||
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
||||||
| 13.04.2026, 16:57 [ТС] | ||||||
|
Jamaica, можно и не скрывать, но просто представьте, у Вас есть GUI приложение и оно общается с БД, а теперь представьте, что Вы эту БД будете видеть на заднем плане GUI. Также и с Excel. Зачем он на заднем плане, если логику настроили на кнопках и лазить в Excel не требуется в ручном режиме! То есть скрытие не обязательное
markiza-inc, приношу извинения, за то что неправильно понял Вашу позицию. Также поясню по поводу своей позиции. Там нет эмоций, просто высказал своё мнение и делал выводы на основании ситуаций и жизненного опыта. Сразу написал, что без обид и не претендую на истину! По поводу новичка я же в качестве примера привёл и сейчас к нему вернёмся, но интересный момент что Вы как и многие не смотрите код, но делаете выводы. Это странно, но перейдём к картинке. I can, markiza-inc, я не отрицаю что я на этой картинке могу быть там, где Вам удобно! Когнитивные искажения работают и в мою сторону тоже. Но отбросим всё сказанное и оставим только контекст, ведь он важнее всего сказанного. Что мы имеем: Какой-то чувак вкатился в IT через самый неперспективный способ (Desktop + VBA). За три года осознал, что на этом языке есть то, что можно решить, т.к. сообщество не предоставили решения (с той же Userform, если Вы все знали как данный момент решить, и всё это легко и просто, то почему не подсказали в ранее похожих темах хотя бы направление, ведь Вы далеко не теоретики (без эмоций, чисто на основании слов)?). Далее много споров про распаралеливание вычислений, как итог - готовый VBD_Kit_Interface_SDI (технически довольно непростой проект). И чисто парочку архитектурных моментов (чисто для понимания, ведь код не читаете, придётся объяснять всё, но к счастью у меня была заготовка): 1. VBD_Kit_Interface_SDI — Процессная изоляция для Excel. Реализует возможность запускать изолированные процессы Excel, управлять ими, передавать команды и динамически собирать VBA-код в дочерних процессах. Зачем это нужно? Excel — однопоточное приложение. Длительная операция блокирует весь UI. Параллельное выполнение VBA-кода в рамках одного процесса невозможно (при попытке запустить несколько потоков через WinAPI – вылет приложения). А создание отдельных процессов Excel «вручную» — это костыли без контроля. VBD_Kit_Interface_SDI это первый в мире публичный компонент (можете проверить самостоятельно), который решает эту проблему системно. Несколько дней или даже неделю я потратил чисто на проектирование всей системы (ручка, листы А4, размышления) и вот что получилось: Публичный API Управление процессами: • Process_Create — создание одного или нескольких изолированных процессов Excel. Принимает исполняемый компонент (.bas), дополнительные компоненты, количество процессов, тип (фоновый/приложение). Автоматически собирает ядро потока (modKernel_Thread) в дочернем процессе, копирует компоненты, устанавливает свойства документа для межпроцессного взаимодействия. • Process_Terminate — завершение процессов. Два режима: «мягкий» (через контроллер потока) и «аварийный» (через WinAPI TerminateProcess). Работает как для конкретного PID, так и для всех процессов в снимке. • Process_Kill — «аварийное» WinAPI завершение по PID или имени процесса. С опциональной проверкой — является ли процесс экземпляром Excel. • Process_Save — сохранение состояния процесса в файл (.xlsx). • Process_Get_State — чтение актуального состояния процесса: выполняется, приостановлен, завершён, не отвечает, в режиме отладки, остановлен вручную. • Process_Get_Snapshot — снимок всех запущенных SDI-процессов Excel в системе. Перебирает окна, получает PID, проверяет отзывчивость, читает метаданные через COM. Реализован оптимизированный механизм получения снимков с минимально возможными накладными расходами! • Process_ExecuteCommand — универсальная точка входа для отправки команд процессу: Initialize, Terminate, Run, Halt, Save, Resume, Suspended, AbortExecution, ChangePriority, EfficiencyMode, ProcessAffinity, а также добавление/удаление/обновление VBA-компонентов в рантайме. Управление потоками: • Threads_Change_State — приостановка и возобновление потоков процесса через SuspendThread/ResumeThread. • Threads_Change_Priority — изменение приоритета процесса (от Idle до RealTime). • Threads_Get_ProcessAffinity / Threads_Set_ProcessAffinity — чтение и установка маски привязки процесса к логическим ядрам процессора. Бинарная строка: "11001100" — первое и второе логические ядра активны, третье и четвёртое — нет. • Threads_EfficiencyMode — перевод процесса в режим энергоэффективности через SetProcessInformation с PROCESS_POWER_THROTTLING_EXECUTION_SPEED . Архитектурная особенность: при создании процесса компонент динамически извлекает нужные функции из собственного модуля (контроллер потока, вспомогательные процедуры) и инжектирует их в дочерний процесс без участия файловой системы (операции происходят чисто в RAM). Дочерний процесс получает автономное ядро, способное принимать команды от родителя. Одновременно инженерно-продуманный и в тоже время «опасненький» подход! Но это было ключевое требование при разработке компонента! Ключевая структура данных
В общем и целом – это не просто какой-то модуль, это полноценный менеджер процессов Excel с полным контролем жизненного цикла без привлечения сторонних библиотек и языков! 2. VBD_Kit_Cryptography — Криптография Криптография на VBA имеется в открытом доступе, но на мой взгляд, она недостаточно продумана и архитектурно ничего нового, и интересного не приносит! То есть, по сути, криптография на VBA – это обёртки над функциями без инженерной мысли (опять без эмоций, это чисто моё мнение)! Базовый уровень • Crypt_Protect_Data / Crypt_Unprotect_Data — шифрование и дешифрование строк. Четыре алгоритма: o XOR (VBA-реализация) o AES-256 (VBA-реализация) o AES-128 через CNG (Windows Cryptography Next Generation) o AES-256 через CryptoAPI Опциональный Base64 на выходе. Расширенный уровень • CryptEx_Protect_Data / CryptEx_Unprotect_Data — универсальная точка входа. Принимает «любой» тип данных: o Строки, числа, даты, булевы значения o Range (диапазон ячеек) — поячеечное шифрование o Массивы до 3 измерений o Файлы (бинарное шифрование с сохранением расширения) o Папки (пакетная обработка) o VBA-компоненты (шифрование исходного кода в модуле) o VBA-проекты (шифрование всех компонентов) o Процедуры (шифрование отдельной процедуры внутри модуля) Функция автоматически определяет тип входных данных через семантический анализ (Get_SemanticDataType). Параметр Explicit_DataType позволяет указать тип явно, если требуется. Дополнительная привязка к окружению: o Use_OS_Data — добавляет идентификатор ОС к ключу; o Use_Hardware_Data — добавляет идентификатор оборудования (материнская плата, процессор и т.д.). RSA • modRSA_PoolFunctions — работа с RSA: o Генерация RSA-ключей (2048, 3072, 4096, 8192 бит) через BCrypt o Генерация случайных AES-ключей (256, 512 бит) o Шифрование AES-ключа публичным RSA-ключом o Дешифрование AES-ключа приватным RSA-ключом Архитектурная идея Шифрование реализовано только для строк — это единственная атомарная операция. Расширенная функция (CryptEx_*) не занимается шифрованием, а превращает любые данные в строковое представление через пользовательскую сериализацию. Это даёт две оси расширения: • Добавляешь новый алгоритм → он автоматически работает со всеми типами данных • Добавляешь новый тип данных → к нему применяются все алгоритмы шифрования Ноль дублирования кода (этот и другие компоненты — это как раз пример того, что этап проектирования и размышлений перед написанием кода очень важен, если Вы хотите получить на выходе что-то действительно стоящее)! 3. VBD_Kit_Hashing — Хеширование • Get_HashSumm_Data — единая функция хеширования. Алгоритмы: MD5, SHA-1, SHA-256, SHA-384, SHA-512. Три провайдера: WinAPI (BCrypt), .NET Framework, нативный VBA-код. Типы входных данных (с автоопределением): • Строки и числа • Диапазоны и массивы • Файлы и папки (рекурсивный хеш) • VBA-компоненты и проекты Для папок — сначала хешируются все файлы, затем конкатенация хешей хешируется повторно — получается единый хеш директории. Для VBA-компонентов — модуль выгружается во временный файл, хешируется, файл удаляется. Для проектов — хешируются все компоненты, результаты объединяются. Архитектурная идея Как и в VBD_Kit_Cryptography, не нужно указывать явно, что хешируется! Функция автоматически определит на уровне семантики то, что нужно прохешировать! Максимально простой вызов и простейшее добавление новых типов данных! 4. VBD_Kit_Security — Безопасность MS Office Работает с реестром Windows, XML-структурой файлов Office, WinAPI. Аудит (снятие защит) • Audit_ExcelObjectModel — снятие защиты книг и листов Excel (xlsm, xlsb, xlsx). Работает через распаковку файла как ZIP, удаление XML-узлов, обратную сборку. Поддержка пакетной обработки файлов и папок. Автоматическая генерация и уничтожение GUI с прогресс-баром во время работы алгоритма. • Audit_Unviewable — снятие защиты просмотра VBA-проекта. Работает почти для всех форматов Office (xlsm, xlsb, xlam, docm, dotm, pptm...). Для современных форматов — модификация vbaProject.bin. Для старых форматов (xls, doc, ppt) — конвертация в новый формат, обработка, возврат. • Audit_VBAProject — runtime-перехват диалога ввода пароля VBA-проекта через стандартную технику WinAPI hooking (DialogBoxParam). Инжектирует модуль с перехватчиком в дочерний процесс, открывает файл в этом изолированном процессе — пароль не запрашивается. Защита • MacroProtection_Unviewable — установка защиты VBA-проекта от просмотра. • MacroProtection_VBAProject — установка пароля на VBAProject. Управление параметрами безопасности: • MacroSecurity_MacroParameters_Assign / _Fetch — управление уровнем доверия макросам и доступом к объектной модели VBA. Для Excel, Word, PowerPoint, Access, Outlook. • MacroSecurity_ProtectedView_Assign / _Fetch — управление защищённым просмотром (вложения, интернет-файлы, небезопасные расположения). • MacroSecurity_ExternalContent_Assign / _Fetch — управление подключениями к данным и обновлением связей в MS Excel. • MacroSecurity_TrustedLocations_Add / _Fetch / _Remove / _Reset — полное управление доверенными расположениями. • MacroSecurity_TrustRecords_Fetch / _Remove / _Reset — чтение и очистка записей доверия (какие файлы пользователь уже разрешил). • MRU_ViewableItems_Fetch_Files / _Fetch_Folders — извлечение истории последних открытых файлов и папок из реестра. Архитектурные принципы Несколько вещей, которые объединяют все компоненты: 1. Семантическое определение типов. Функция Get_SemanticDataType анализирует входные данные и определяет — это строка, файл, папка, VBA-компонент, проект, диапазон, массив или что-то другое. Это позволяет писать единые точки входа вместо десятков перегрузок (которые VBA не поддерживает, что ещё больше усложняет семантику). Идея данного механизма мне пришла в голову как раз на этапе проектирования; 2. Конфигурация сборки. Каждый компонент начинается с блока #Const, который определяет целевую платформу (Windows/Mac), разрядность (x32/x64), режим сборки (Release/Debug), валидацию. Этот придуманный подход я ещё не полностью обкатал, но сама идея мне показалась неплохой. 3. WinAPI как фундамент. Kernel32, User32, Advapi32, Psapi, Bcrypt, Shell32 — Управление процессами, реестром, криптографией и прочее — всё через прямые вызовы Windows API. 4. Принцип единого модуля. Каждый компонент — самостоятельный .bas-файл с GUID-идентификатором. Не россыпь модулей, не класс-модули с зависимостями, а самодостаточная единица. Компоненты могут использоваться независимо или вместе. Без конфликтов между собой. 5. Нулевая зависимость. Ни одной внешней библиотеки, ни одной DLL, ни одного COM-объекта за пределами стандартной Windows и Office. Всё, что нужно — VBA и WinAPI. Компонент работает на Windows с MS Office без предварительной настройки (скопировал файл — компонент работает). 6. Работа без доверенного доступа к объектной модели. Компоненты спроектированы так, чтобы функционировать даже при снятой галочке «Доверять доступ к объектной модели проектов VBA». 7. Осознанное использование GoTo/GoSub. Вместо десятков мелких Private-функций используется паттерн GoTo/GoSub внутри основных процедур. Это осознанный выбор: большинство логики функций остаётся в одном месте, без прыжков по модулю. Снижает когнитивную нагрузку при чтении — ты видишь полный контекст, не переключаясь между процедурами. 8. Централизованная обработка ошибок. Все компоненты используют единую функцию Show_ErrorMessage_Immediate для вывода ошибок. Не MsgBox в случайных местах, не Debug.Print россыпью, а одна точка, через которую проходят все сообщения об ошибках. 9. Единый шаблон входа в функцию. Каждая публичная функция начинается с одинаковой последовательности: декларирование всех переменных (идентификаторов), проверка платформы (#If Not Windows_NT), инициализация модуля (Call Init_VBD_Kit_*), проверка совместимости сборки, валидация входных параметров — и только потом основная логика. Единая структура снижает порог входа при чтении кода. И вот тут нюанс! Если у меня действительно эффект ДК и всё что я сделал ничего не стоит и ценности никакой нет, так как работа проведена, но все всё знали и это всё достаточно примитивно, то у Вас должны быть даже более крупные проекты? Было бы их интересно посмотреть) Если нет ни кода, ни проектов, то получается относительно картинки Ваши координаты следующие: (-100, 0). Что скажите?
0
|
||||||
| 13.04.2026, 17:43 | |||||||
|
Кликните здесь для просмотра всего текста
0
|
|||||||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
|||
| 13.04.2026, 18:31 | |||
|
А вот народ (на ютубе видел) продвигает тему EXCEL дэшбордов, скрывая листы данных.
0
|
|||
|
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,731
|
|
| 13.04.2026, 21:34 | |
|
А не проще было бы, если так надо, запускать один эксель тычком по xlsm, а второй как "excel.exe macro2.xlsm" ? И будут независимые окна. И того более, если загрузиться со флешки Sergei Strelec, то там и тык по файлу два отдельных экселя запускает. То есть дело в настройках ОС.
Подставлять же палки, чтобы из однопоточного приложения сделать многопоточное - ну это так себе, мне кажется.
1
|
|
|
930 / 257 / 100
Регистрация: 21.10.2012
Сообщений: 621
|
||||
| 13.04.2026, 22:24 | ||||
|
Во-первых, "Что скажете?" пишется через "е", но это ерунда, здесь многие путают наклонения глаголов, пишете и пишите, скажете и скажите, и т.д. Как говорится "Да и хрен бы с ним". Во-вторых, Вы написали неплохой пост, пояснили что у Вас там есть, как называется и т.д. И даже написали: В-третьих, Если Вы чего-то не видели, то не значит что этого не существует! Может в файлах есть информация, которую Вы видеть не должны, или люди не хотят выставлять это, т.к. может быть коммерческая информация, а "колупаться" чтобы убрать её из файлов нет ни желания, ни времени; или люди считают что Вы этого просто не достойны. Да, и вообще, мало ли других причин для этого. В-четвёртых, Когда в 6-ом классе я увлёкся электроникой, то по картинке находился в "яме страданий". Кроме Закона Ома ничего, можно сказать, и не знал. Пэтому выписывал и читал журналы, заказывал книги в книжном магазине по каталогу. Изучал много, одним словом. Потом институт, тоже учёба, и т.д. Окончив институт пришёл на предприятие - Самолётный завод (если кратко). Но после одного случая, а именно: Сидим в лаборатории, работаем, вдруг забегают наши мужики (нач. лаборатории и три ведущих инженера) и прыгают от радости, обнимаются, прямо как сейчас в конце американских боевиков, президент с министром обороны и ешё 100-ей чиновников хлопают в ладошки, обнимаются, целуются. Радуются что один "ихний" супер-чудик всех победил. Спрашиваю, мол, что случилось? Они в ответ: "Мы с самолётом связь установили, с пилотами поговорили". И всё, подумал я. Т.е. кто-то в каком-то НИИ разработал прибор связи, на каком-то заводе его сделали, конструкторы нашего завода (совсем другой отдел) расчитали антену, какие-то сварщики её сварили и привезли нам, наши два слесаря установили её на крыше, другие слесари провели кабель, ковыряя стены и потолки. А вы:
Вот тут я понял, ну их всех нахрен и переместился по рисунку вправо, где два чудика с фразой: "Да, забей". Там сейчас и пребываю. В-пятых, Ну, а влево по картинке я перемещусь (не дай, Бог, конечно) только если выживу из ума. Как-то так: Просыпаюсь утром, смотрю в окно - ух ты, классно (тучи, дождь, слякоть). Гляжу вокруг на всё, что у меня есть. И говорю: "Да, я ГЕНИЙ". Подхожу к зеркалу, смотрюсь, да я ещё и красавчик. И только голос жены с кухни прерывает мои созерцания: "Эй гениальный красавчик, жрать иди. Да трусняк поправь, а то гения своего поцарапаешь об дверные косяки". Надеюсь такая ситуация и такое состояние меня не настигнут, хотя в жизни такое видел, к сожалению. Веду правильный образ жизни, просто для себя и по своему выбору. Никого не оскорбляю. Чего и Вам, Zeus_0x01, желаю.
1
|
||||
|
1333 / 551 / 112
Регистрация: 29.03.2016
Сообщений: 1,355
|
||
| 13.04.2026, 22:49 | ||
|
Не по теме: Ведя правильный образ жизни в молодости,
0
|
||
| 13.04.2026, 22:54 | |
|
Не по теме: "Велосипедист - бедствие для экономики. Он не покупает автомобиль и не берет под него кредит. Не покупает бензин. Не пользуется услугами ремонтных мастерских. Не страхует "гражданскую ответственность". Не пользуется платными стоянками. Не страдает от ожирения. Да он еще и здоров, черт возьми! Здоровые люди не нужны для экономики. Они не покупают лекарства. Они не ходят к частным врачам. Они не увеличивают ВВП." (Dmitriy Mikhalap)
0
|
|
|
930 / 257 / 100
Регистрация: 21.10.2012
Сообщений: 621
|
|
| 14.04.2026, 00:42 | |
|
Jamaica,
Не по теме: Фраза «Ведя правильный образ жизни в молодости, вы продлеваете свою неухоженную старость» не является точной с точки зрения современной науки. Старение — это биологический процесс, который зависит не только от образа жизни в молодости, но и от множества других факторов: генетики, окружающей среды, хронических заболеваний и др. Однако правильный образ жизни в молодости действительно может замедлить старение и улучшить качество жизни в пожилом возрасте. Zeag, Не по теме: Как Вы правильно привели цитату, нашему "теневому правительству" нормальные и здоровые люди, к сожалению, "не нужны". Но это является верным только с использованием кавычек. Не будь нормальных людей, цивилизация давно бы сгинула ...
0
|
|
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
||||
| 14.04.2026, 04:28 [ТС] | ||||
|
markiza-inc, указание на орфографические ошибки, истории из жизни, атакующие примеры и прочее... Та же песня! Просто прочитайте свой пост про антенну и мой про описание API и попробуйте найти себя на картинке ещё раз (без негатива).
Поймите меня правильно, и Вот Вам пример: Человек утверждает, что он шарит. Хорошо, его право и мнение. Я спрашиваю, есть ли код, чтобы посмотреть, насколько ты "мощный тип"? Он говорит, что код не покажу (опять его право, но в большинстве случаев кода просто нет). Я говорю хорошо, есть ли проекты или интересные задачи, которые ты решил или в которых ты участвовал? Он начинает юлить... Вопрос? Как мне не зная человека, относится к его словам и компетентности, если он в своём технологическом стеке ничего интересного и не делал и поделиться даже идеями не может? Интересный парадокс в том, что когда спрашиваешь про подобное, люди начинают говорить, что это их секретные наработки и я не готов показать их миру, т.к. они не для пользователей, а чисто хобби и прочее! Но когда начинаешь публиковать что-то своё, то эти же люди утверждают, а зачем это пользователям))). Реальность такова, что спрашивать про проекты это стало оскорблением для тех, кто 10-20 лет чем то занимается, но по итогу, после саморефлексии понимает, что ничего интересного он и не сделал и всё это время стоит на месте! Будем честны! Любите примеры, вот Вам пример с машиной! Есть 2 человека. Один катается 1 год на машине, другой 10 лет. Тот кто катается 10 лет, узнал за это время что такое дрифт, экстремальное вождение и прочее (всё на теоретическом уровне), но по факту навыками не отличается от годовалого водителя, т.к. они оба ездили по одним дорогам! Человек устроен так, что если он что-то узнает, ему уже автоматически кажется, что он шарит в этой теме! И сейчас я это докажу! Никого не хочу обидеть, просто пример и без негатива! Zeag пишет: 1) Ни о какой многопоточности речи и не идёт! Здесь происходит изоляция UI! Это разные вещи и в VBA многопоточности нет! Создание отдельного процесса - это не многопоточность в привычном понимании, а цель решения - это изоляция, а не параллелизм! 2) Зависимость от настроек ОС влечёт за собой то, что каким-то образом надо гарантировать одинаковое поведение у всех пользователей на разных сборках ОС! 3) "запускать один эксель тычком по xlsm, а второй как "excel.exe macro2.xlsm"" - как этот механизм представляете с точки зрения удобства и пользования? Нужен ещё файл-лаунчер для запуска конкретных книг с UI? Эта альтернатива решает другую задачу: "как получить два независимых окна Excel", но моё решение это "как из двойного клика по одному xlsm(b)-файлу автоматически получить изолированный процесс с скрытым Excel и видимой формой, не трогая остальные книги пользователя и не завися от настроек". Предложенная альтернатива не эквивалентна решаемой задаче и в общем случае не сработает! Zeag, Вы правильно чувствуете, что решение не простое, но предлагаете решение, которое не покрывает исходные требования. Вот в чём и проблема! Только через практику можно действительно понять все нюансы! А если человек практически ничего не делает, то как я могу быть уверен, что ему можно доверять и верить??? Zeag, никакого негатива, просто мы все в этой ловушки живем и думаем, что шарим лучше, до момента практики и реализации! Вот такие выводы делают большинство, кто сами практически подобное не реализовывали и не знают всей кухни и думают что всё изучено по сей день и можно всё найти в сети интернет! При этом делают выводы и даже код не смотрят: VBUtil_XFormExcel - так это же фигня, можно же через простой CreateObject сделать тоже самое, да чуть покопаться, но по любому решения есть в интернете на все вопросы; VBD_Kit_Interface_SDI - да что сложного, распараллеливание вычислений - это не новая тема и данный компонент ничего не приносит нового. CreateObject - это известная всем тема. VBD_Kit_Cryptography - да это просто обёртки над алгоритмами и не более...
0
|
||||
|
930 / 257 / 100
Регистрация: 21.10.2012
Сообщений: 621
|
||||||||||||
| 14.04.2026, 07:05 | ||||||||||||
|
Да не переживайте Вы так, всё у Вас будет хорошо. Мы Вами ещё гордиться будем (наверно, а может и нет).
1
|
||||||||||||
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
|
| 14.04.2026, 07:59 [ТС] | |
|
Как говорится, «Кнута знаешь? Это markiza-inc не читал, но осуждал!».
По самому решению вроде по существу вопросов не осталось, дальше дискуссия уходит не туда. Если появятся замечания или кто-то покажет аналогичный компонент и прочее — с интересом посмотрю. Спасибо всем, кто участвовал и проявил интерес. markiza-inc, без негатива!
0
|
|
|
860 / 510 / 187
Регистрация: 09.03.2009
Сообщений: 1,731
|
|
| 15.04.2026, 21:48 | |
|
Интересно, что бы на это сказали Кнут, Вирт, Дейкстра и прочие корифеи... Дали бы премию Тьюринга?
Ну вот сделан эксель так. Были, видимо, у MS основания так сделать. А хочется многопоточность, но интерфейс в том же стиле. Так перепишите движок, прецеденты же есть - Open Office, Libre Office. Только при переписи С++ или что-то примените и будет конфетка.
0
|
|
|
150 / 8 / 0
Регистрация: 23.09.2025
Сообщений: 24
|
||
| 16.04.2026, 05:37 [ТС] | ||
|
Zeag, Про Кнута это просто для примера... (типа человек код даже не видел, но делает выводы)! Можете с тем же успехом подставить любое другое художественное или техническое произведение. Будет тот же смысл!
Проще же вникнуть в имеющийся инструмент и добавить фичи + это же Windows_NT, а не Linux (значит с большей вероятностью не сломается через 3-5 лет то, что делал)! Да и на переписать современный софт в одного - это в большинстве случаев нереально + потеря времени. С большой вероятностью проект будет незакончен и брошен (таких примеров хватает)! Вы рассматриваете мою работу как костыли, но она ничем по принципу работы не отличается от работы макросов, которые используются для обработки данных или даже тех же надстроек! Надстройки даже менее удобны для установки, а тут всё работает и продумано так, чтобы от пользователя требовалось минимальное количество действий! Или надстройки по вашему тоже костыли?
0
|
||
| 16.04.2026, 05:37 | |
|
Изоляция MS Agent 2.0
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|