Дата

Событие

04.02.2024

BedvitCOM.dll_v5.1

BedvitXLL.dll_v5.1

 

+XLLcmdRangeStore() - команда меню XLL - хранение в XLL и шифрование данных на листе Excel: добавлена возможность использования разных локализаций и разной разрядности Excel при шифровании, дешифровки и сохранении формул/значений (см. видеосправку по ссылке). Добавлена обработка ошибок на листе Excel при шифровании, дешифровки и сохранении формул/значений.

+Теперь единая версия для XLL и для COM, т.к. комилируются они в связке друг с другом и добавление и изменение функционала происходит сразу в двух проектах
+XLLcmdFindSummands() - команда меню XLL - поиска слагаемых для суммы: исправлена ошибка в поиске слагаемых, которая появилась в последней версии.
+XLLcmdErrors - команда меню XLL - поиск ошибок на листах Excel: исправлена ошибка, когда вывод ошибок происходил только с текущего листа, а не со всей книги Excel
+XLLcmdTextSpaseToNumber() - команда меню XLL - преобразования текста в число: исправлена ошибка возникающая в ходе преобразования текста в число.

 

+новая функция XLL CoCreateGuidXLL() - создает GUID — уникальное 128-битное целое число. В двух режимах, стандартный и упрощенный ("{E06AD101-5907-474B-8506-A7CD0149537F}" и  "c883f002273a4c63ae52f91c787ba1e9" соответственно). Подробнее в WIKI

 

+новая функция XLL LikeXLL() - универсальное средство для сравнения строк. Возможности сопоставления шаблона позволяют использовать подстановочные знаки, списки знаков или диапазоны знаков в любой комбинации, чтобы сопоставить строки. Аналог LIKE от Microsoft. Подробнее в WIKI

 

21.01.2024

BedvitCOM.dll_v4.0

BedvitXLL.dll_v5.0

 

+новый блок шифрования на листе Excel, шифрования файла пользовательских сохранений, хранение зашифрованных диапазонов формул/данных с листа Excel в файле пользовательских сохранений.

+создание Wiki по XLL и COM - будет дополнятся актуальными материалами.

 

+новая функция COM CoCreateGuid() - создает GUID — уникальное 128-битное целое число

+новая функция COM UnicodeCharCodeGet() - возвращает юникод указанного символа в строке

+новая функция COM UnicodeCharCodeSet() - меняет указанный символ в строке на указанный юникод  

+новая функция COM VariantSerialization() - сериализация Variant, в т.ч. массивов в байтовый массив

+новая функция COM VariantDeserialization() - десериализация байтового массивв в Variant, в т.ч. в массив, если он был при сериализации

+новая функция COM VariantAES256Encrypt() - шифрование Variant, в.ч. массивов алгоритмом шифрования AES256 

+новая функция COM VariantAES256Decrypt() - дешифрование Variant, в.ч. массивов алгоритмом шифрования AES256 

по новым функциям подробности в Wiki

 

+оптимизированы методы get_Bignum() и put_Bignum(), добавлена возможность выводить как символы нижнего так и верхнего регистра, добавлены новые уровни основания счисления до 62 (полностью соответствует спецификации GMP)

+теперь функции FilterUnicodeChar(), LikeVBA(), RegexMatchECMAScript() поддерживают нуль-символ внутри строки
+ArrayDtoD() - автоматический расчет первого 0го измерения
+ArrayFilterV() - теперь условия можно задавать одномерным массивом, в т.ч. из 3 элементов и одномерным массивом блоками по 6 элементов/условий
+AESstrUTF8() - теперь поддерживает нулевые символы внутри строки
AES128strUTF8() - переименовал в AESstrUTF8, т.к. 128 или 256 bit зависит от длины ключа, который введет пользователь 16 или 32 символа (EN в 2 раза меньше RU, т.к. 1 и 2 байта на символ в utf-8 соответственно)
AESstrUTF8() - изменились индексы алгоритмов шифрования, теперь у всех функций по шифрованию одинаковые индексы для алгоритмов AES

10.10.2023

10.07.2023

BedvitCOM.dll_v3.8

BedvitXLL.dll_v4.9

+новый инсталятор BedvitXLL для x64

+в релизе BedvitXLL64 (64 bit) - версия, BedvitXLL32 (32 bit) - в данной сборке нет.

26.06.2023

BedvitCOM.dll_v3.7

BedvitXLL.dll_v4.8

+ оптимизирован фильтр массива ArrayFilterV() - теперь операторы OR, END - ленивые (как в С/С++)

+ добавлены регулярные выражения в фильтр массива ArrayFilterV() (оператор 128), грамматика ECMAScript
+ так же написана отдельная функция RegexMatchECMAScript(string, pattern) - подробности в Wiki
Везде использована стандартная библиотека C++, функция regex_match(), грамматика ECMAScript, на https://regex101.com/ можно проверить шаблон в разделе "EcmaScript (JavaScript)".

14.06.2023

BedvitCOM.dll_v3.5

BedvitXLL.dll_v4.6

-VBA Storage - отключен до следующей версии (переход на новые ключи шифрования)

-VBA Run - запуск VBA-команд отключен до следующей версии (переход на новые ключи шифрования)

-HashStringSHA() замена на аналогичные функции с поддержкой UTF8

+SHAstrUTF8()

+новая функция MDstrUTF8()

+новая функция AES128strUTF8()

+проекты перешли на С++20
+теперь файл библиотека СОМ не утанавливается/удаляется если в реестре уже зарегистрирована последняя версия, а так же не удаляются старые СOM, которые находятся НЕ в той же папке, где и XLL (к примеру, в папке проекта на Python, в составе библиотек другого программного продукта и т.д.) 
+выводится путь к библиотеке СОМ в Help XLL
+изменен внутренний ключ шифрования
+теперь два входящих параметра для XLLcmd (строка с подсчетом символов без нуль терминатора, LPXLOPER) и один исходящий LPXLOPER (0 как ошибка #ЧИСЛО!). Excel interprets a null pointer as a #NUM! error.
+более широкое использование исключений С++ catch (const std::exception& e) и catch (const CAtlException& e), catch (...)
+добавлен класс пользовательской формы UserFormsXLL на win api (движек для VBA Storage и других пользовательских форм)
+новый таймер - замер времени выполнения команд до наносекунд
+полноценный Like в ArrayFilterV
+отдельная функция Like() полный аналог VBA Like (бинарный режим)

+новая функция COM ArrayConvertVtoS() - подробности в Wiki
+новая функция COM ArrayConvertStoV() - подробности в Wiki
+новая функция COM ArrayCopyStoV() - подробности в Wiki
+новая функция COM SplitV() - подробности в Wiki
+новая функция COM SplitS() - подробности в Wiki
+новая функция COM ArraySize() - подробности в Wiki
+новая функция COM ArrayReDim() - подробности в Wiki
+новая функция COM ArrayDtoD() - подробности в Wiki
+новая функция COM VariantCopy() - подробности в Wiki
+новая функция COM FileName() - подробности в Wiki
+новая функция COM Version() - подробности в Wiki

18.12.2022

BedvitCOM.dll_v3.3

BedvitXLL.dll_v4.4

+Новый алгоритм распаковки и регистрации BedvitCOM из BedvitXLL:

1.В целях безопасности - по умолчанию библиотека BedvitCOM отключена, пользователю нужно разово в меню ее подключить - нажав кнопку, в дальнейшем это будет происходить автоматически.

2.В целях снижения требований для прав пользователей - теперь механизм регистрации СОМ-библиотеки не вызывает Regsvr32. Это происходит другим штатным методом под пользователем.

3.Для возможности использовать раннее связывание в коде VBA и автоматического подключения СОМ-библиотеки в References VBA без участия пользователя - установите флажок "Доверять доступу к объектной модели проекта VBA". Если доступ отключен - пользователь может самостоятельно выбрать в References VBA эту библиотеку для каждого файла отдельно и не включать галку (по свом соображениям) или ничего не делать и пользоватся поздним связыванием в коде VBA.

При включении доступа к объектной модели VBA достаточно сохранить файл Excel и автоматическое подключение СОМ-библиотеки в References VBA запустится автоматом.

4.Теперь BedvitCOM распаковывается в ту же папку, где находится BedvitXLL

15.10.2022

BedvitCOM.dll_v3.0

BedvitXLL.dll_v4.0

+Новый код версий сборки для XLL и СОM библиотек: major.minor.date.time

+Новый установщик для XLL (теперь все в одном файле)

+Новое обозначение разрядности библиотек (было BedvitXLL(x86).xll, стало BedvitXLL32.xll)

20.09.2022

BedvitCOM.dll_v2.0.2.0

BedvitXLL.dll_v3.2.2.0

Новые инструменты для массива.
Для массивов любого количества размерностей, типа - VARIANT.
Преобразование происходит "на месте" (штатным инструментом от Microsoft VariantChangeType, CharUpperW, CharLowerW)
Для всех элементов массива, для которых возможны преобразования:
+новая функция COM ArrayCharLowerV() - преобразовать все символы строки в нижний регистр
+новая функция COM ArrayCharUpperV() - преобразовать все символы строки в ВЕРХНИЙ регистр
+новая функция COM ArrayNumToCharV() - преобразовать все данные в тип: String
+новая функция COM ArrayCharToNumV() - преобразовать все данные в тип: Double (числа сохраненные как текст)

Подробнее в блоге

BedvitCOM.dll_v2.0.1.0

BedvitXLL.dll_v3.2.1.0

Новый инструмент для массивов COM: Фильтр для массива ArrayFilterV()

Завершается цикл разработки инструментов для массивов.

Готовые инструменты:

+новая функция COM ArraySortS() - быстрая сортировка данных (String) в одномерном/двухмерном массиве

+новая функция COM ArraySortV() - быстрая сортировка данных (Variant) в одномерном/двухмерном массиве

+новая функция COM ArrayFilterV() - быстрый и универсальный фильтр одномерного/двухмерного массива  (любые условия для любого набора столбцов)

+новая функция COM Transpose() - быстрое транспонирование (на месте) двухмерного массива (поддерживаются все типы данных)

+новая функция COM Array2Dto1D() - быстрое преобразования двухмерного массива в одномерный (данные не обрезаются, данные из всех измерений располагаются в первоначальном порядке)

+новая функция COM Array1Dto2D() - быстрое преобразование одномерного массива в двухмерный (данные не удаляются) 

Класс UnorderedMap - ассоциативный контейнер, содержащий пары ключ-значение с уникальными ключами. Поиск, вставка и удаление элементов имеют среднюю постоянную сложность.

01.08.2022

BedvitXLL v3.2.0.2

1.Оптимизирован алгоритм прорисовки команд меню при добавлении/удалении (меньше переключений между окнами Excel)

27.07.2022

BedvitXLL v3.2.0.1

1.Исправлена ошибка в команде "МЕНЮ", в подкоманде "По умолчанию" (ранее команды "по умолчанию" зависили от набора команд при сохранении настроек, теперь это фикс.)

2.Исправлен обработчик ошибок в блоке команд "Ссылки" (в результате чего могли возникать критические ошибки с закрытием Excel)

BedvitXLL v3.2.0.0

1.Изменился алгоритм работы библиотеки/надстройки с пользовательскими сохранениями

Теперь работа с .bin выглядит так же, как работа с файлами Excel, т.е. при открытии файла .bin - все настройки загружаются из него и дальнейшие изменения сохраняются в нем (в текущем, активном файле .bin). В целях определения какой файл открыт - выведена информация в меню.

Ранее все настройки сохранялись в базовом BedvitXLL.bin, и могли только экспортироватся в другой .bin (Сохранить как...) или загружатся в базовое сохранение (Открыть), т.е. ранее работа библиотеки/надстройки всегда была с базовым сохранением.

2.Новый функционал: вывод коллекции иконок Excel по FaceID (около 32 тыс.штук) с возможностью вывести на лист Excel.

3.Новый функционал: копировать/вставить формулы на листе Excel (без смещения адресов). Не используется буфер обмена.

 

BedvitCOM v2.0.0.1 - не критичные исправления ошибок (array.vt & (VT_ARRAY | VT_VARIANT))

06.05.2022

BedvitXLL v3.0.0.0 - 3.1.0.0 

1.Новая команда меню - "МЕНЮ". Дает пользователю возможность настраивать меню и контекстное меню - включая нужные команды и отключая не используемые.

2.Новый функционал для хранения и выполнения VBA кода + защита VBA кода от просмотра

3.Новый формат файла пользовательских сохранений BedvitXLL.bin (не совместим со старым).

4.Создан новый установщик BedvitXLL. Состоит из 2 частей. т.к. в единой сборке (предыдущая версия) переодически вызывает рефлексию у антивируса, несмотря на то, что код открыт, и легко проверяется отсутствие вредоносного функционала. 

29.04.2022

 BedvitCOM v2.0.0.0
1.Класс/массив Bignum теперь может быть любого размера, а не как ранее 256 чисел. Увеличение размера происходит автоматом, в зависимости от последнего задаваемого индекса числа в массиве.
2.В связи с этим добавлен метод BignumArraySize() - Возвращает количество чисел Bignum в созданном классе/массиве.
3.Добавлено преобразование Bignum из Float в Integer (обратное преобразование было возможно и ранее). Метод GetToBignumInt(LONG Bignum, LONG BignumBase=10)ВАЖНО! преобразование происходит с заданной ранее точностью в битах для Float (SizeBitsSet). Без округлений, отбрасывается дробная часть. Будьте внимательнее в таких преобразованиях.
4.Исправлен баг в выделением памяти для разных экземпляров одного и того же класса. Теперь для каждого экземпляра - свой участок памяти.
5.Теперь деструктор класса сам очищает память (при удалении класса или завершении процедуры в VBA). Методы Clear теперь нужны только там, где нужно освободить память в действующим классе. При завершении процедуры их писать не обязательно (для VB, и для языков, где класс уничтожается при завершении процедуры - запуская деструктор).

02.02.2021

BedvitXLL v2.0.0.0
Большое обновление.
Добавлена вкладка команд и контекстное меню.
Добавлен набор команд (описание по ссылке)

11.01.2021

23.12.2020

Куплен домен bedvit.ru. Открыт этот сайт.

26.08.2020

Обнаружена интересная особенность: событиями Excel делится сначала с VBA, потом с С++ (с DLL).
Из этого вытекает следующее:
1. Код VBA всегда будет опережать по событиям код из XLL.
2. Это нужно учитывать в своих проектах при использовании DLL.

В частности, в моем случае, при обработки 3х событий в VBA - открытия книги, создания новой или после сохранения книги, автоматическое подключения библиотеки СОМ в References (в для раннего связывания) будет происходить после кода VBA.

Решением в данном случае (для VBA, который будет использовать одновременно и эти 3-и события и функционал XLL и раннее связывание) может быть следующее:
1.(предпочтительный) Дать секунду времени для загрузки xll (для авто-подключения COM), к примеру так

Visual Basic

Application.OnTime TimeValue(Now + TimeValue("0:00:01")), "Ваш_Макрос"

2. Ручное подключение COM в References (при выключенной XLL). Такие подключения XLL не трогает и они сохраняются вместе с файлом под вашу ответственность (условия: СОМ должна быть уже зарегистрирована)
3. Использовать при таких событиях позднее связывание вместо раннего (условия: СОМ должна быть уже зарегистрирована)
4. Опередить XLL и самостоятельно подключить COM для раннего связывания - кодом

Visual Basic

ThisWorkbook.VBProject.References.AddFromGuid "{77D79CA3-15A0-4310-B8D8-0BCBE3F72D96}", 1, 0 ' подключаем COM в References"

(это подключение останется с файлом, как в 1-м варианте)
Если не хотим сохранять подключение, можно кодом отключить

Visual Basic

ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("BedvitCOM") 'отключаем СОМ в References

(см. примеры использования в основной теме под спойлером)
(условия: СОМ должна быть уже зарегистрирована)

Лично, пользуюсь 1-м вариантом - самым простым и универсальным (для остальных решений есть определенные условия их применения, см.условия).

21.08.2020

BedvitXLL v1.0.3.0
Начиная с версии xll v1.0.3.0 рекомендуется использовать раннее связывание для подключения BedvitCOM, т.к. теперь библиотека сама подключает BedvitCOM в References и пользователю не нужно писать доп. код или подключать вручную COM-библиотеку.
Преимуществом раннего связывания в VBA является то, что видны все методы и свойства объектов, возможность их выбора из выпадающего списка, полное описание всех свойств и методов библиотеки в обозревателе объектов (F2), а также выше скорость взаимодествие с СОМ.
Подключение осуществляется в открытой книге, в файле не сохраняется (не возникает ошибки подключения на другом ПК, где нет XLL).

12.12.2019

BedvitXLL v1.0.2.0
Добавлены новые функции в блок: XLLBignumArithmeticInteger и в блок XLL

02.09.2019

BedvitCOM v1.0.1.5
Добавлен метод Transpose - быстрое транспонирование (на месте) двухмерного массива (поддерживаются все типы данных).

26.08.2019

BedvitCOM v1.0.1.0
Добавлен метод "ArraySortV" - быстрая сортировка данных (Variant) в одномерном/двухмерном массиве.
Существующий метод "ArraySort" переименован в "ArraySortS" - сортировка данных (String) в одномерном/двухмерном массиве.

21.08.2019

BedvitCOM v 1.0.0.9
1.InStr - на 2% быстрее предыдущей
2.Replace - найдена ошибка, исправлена.
Теперь быстрее на 1,5% замена символов и быстрее на 100% - если нет совпадений (в два раза).
Добавлена проверка на переполнение BSTR-строки: E_OUTOFMEMORY
Производительность функции - 1 млр. замен - 12,5 сек.

07.08.2019

BedvitCOM v1.0.0.6 и BedvitXLL v1.0.0.6

Исправлена ошибка в функции FilterUnicodeChar в СОМ.DLL, скорректированы наименования категорий.
Оставил "bedvit" только в наименовании библиотеки (удалил из категорий функций Excel). А так как, мало кто пишет XLL, думаю других похожих категорий не будет (конкурентов по наименованию).

24.04.2018

BedvitCOM v.1.0.0.3 и BedvitXLL v.1.0.0.3 (поддержка х32 и х64)
1.Добавлены новые функции в два класса библиотеки COM - арифметика длинных чисел с обычными, т.е. теперь можно совершать арифметические действия длинных чисел с обычными.
2.Добавлен механизм очистки/освобождения памяти как для одного числа, так и для класса/объекта в целом.
3.Сделано новое описание для всех свойств и методов двух классов на русском языке в справке (см. под спойлером и в .HELP)
4.XLL теперь удаляет данные из реестра (COM.DLL) под пользователем при закрытии надстройки.

05.04.2018

BedvitCOM v1.0.0.2 и BedvitXLL v1.0.0.2
1.Изменен порядок аргументов в методе "BignumSet" (теперь, как во всех других методах, номер длинного числа в массиве - стоит первым аргументом).

Ранее было так:
I.BignumSet "6546414654564" , 1
теперь так:
I.BignumSet 1, "6546414654564"

2.Добавлены новые методы в два класса (запись длинного числа в файл .txt и чтение из файла)
.FileSet, .FileGet (описание в .Help и ниже)
3.Собраны библиотеки COM и XLL в 32-разрядной версии (с корректным Help-ом, описанием интерфейса).

26.03.2018

BedvitCOM + BedvitXLL v0.0.0.1 под x64.

Старт разработки СОМ-библиотеки и XLL-библиотеки/надстройки для Excel на С/С++

Первый этап - длинная арифметика на исходниках библиотеки MPIR, Edition 3.0.0 (на основе библиотеки GMP) на С/С++

03.12.2009

BedvitEXCEL v1.0

Старт разработки надстройки для Excel на VBA.

Первые функции: отображения числа прописью - "ПрописьюРуб", "ПрописьюЕвр", "ПрописьюДол", "ЧПрописью", "ЦифраСтрокой"

Яндекс.Метрика