Мой старый сайт и зеркало-архив (осторожно, на сайте реклама!)
Wiki
|
Обновлено: |
|
06.12.2025 |
|
Содержит описание функционала библиотек BedvitXLL.xll (надстройка для Excel) и BedvitCOM.dll с постоянными ссылками и версией, в которой этот функционал появился.
Если не сработал якорь для конкретного раздела, воспользуйтесь оглавлением или поиском (Ctrl+F).
Оглавление
Библиотека (надстройка) XLL для Excel Представляет собой скомпилированный на C/C++ файл динамической библиотеки Windows, специально предназначенной для использования в Excel.
|
Библиотека (надстройка) XLL для Excel
XLL-надстройка представляет собой скомпилированный на C/C++ файл динамической библиотеки Windows, специально предназначенной для использования в Excel. Область применения - Excel 2007 (х32, х64) и выше (для Excel x32 - версия библиотеки (х32), для Excel х64 - версия (х64)). Не поддерживается WinXP. Начиная с версии BedvitXLL 5.0, поддерживается Windows8 и выше, т.е. не поддерживается Windows7, но периодически выходит спец. выпуск BedvitXLLwin7 Содержит
библиотеку BedvitCOM
(выгружается в ту же папку, что и надстройка). Опционально.
Можно отключить при первом запуске или в дальнейшем. Устанавливается
так же, как и "обычная" надстройка Excel (xla, xlam) в папку
надстроек или просто открывается как файл.
Главная страница надстройки BedvitXL (здесь можно посмотреть примеры, скачать надстройку)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Функции листа Excel
Высокопроизводительные функции рабочих листов Excel, написанные на С/С++ и экспортируемые из XLL. Во многом аналогичные стандартным функциям Excel.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Функции листа Excel, категория: XLLBignumArithmeticFloat Арифметика для длинных чисел с плавающей точкой.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v5.0
SumFloat ![]() LPXLOPER12
SumFloat(LPXLOPER12 xlop1, XCHAR * xstr1, int
precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int
bignumBaseIn, int bignumBaseOut, int eNotationOFF)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ SubtractFloat dll v5.0
SubtractFloat
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ MultiplyFloat dll v5.0
MultiplyFloat
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ DivideFloat dll v5.0
DivideFloat
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ PowerFloat dll v5.0
PowerFloat
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v5.0
RootFloat
Квадратный
корень
из обычных/длинных чисел. ![]()
LPXLOPER12 RootFloat(LPXLOPER12 xlop1, int
precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int
bignumBaseIn, int bignumBaseOut, int eNotationOFF)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Функции листа Excel, категория: XLLBignumArithmeticInteger
Арифметика для длинных целых чисел.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ SumInteger dll v5.0
SumInteger
LPXLOPER12
SumInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int
bignumBaseIn, int bignumBaseOut)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ SubtractInteger dll v5.0
SubtractInteger
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ MultiplyInteger dll v5.0
MultiplyInteger LPXLOPER12
MultiplyInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int
bignumBaseIn, int bignumBaseOut)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ DivideInteger dll v5.0
DivideInteger
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ PowerInteger dll v5.0
PowerInteger
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ ModInteger dll v5.0
ModInteger
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ FactorialInteger dll v5.0
FactorialInteger
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ ConvertBaseInteger dll v5.0
ConvertBaseInteger ![]()
LPXLOPER12 ConvertBaseInteger(LPXLOPER12 xlop1, int
bignumBaseIn, int bignumBaseOut)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Функции листа Excel, категория: XLL
Функции XLL не вошедшие в другие категории. ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ FilterUnicodeChar dll v5.0
FilterUnicodeChar ![]() LPXLOPER12 FilterUnicodeChar(XCHAR * StringIn,
XCHAR * EnableChar, XCHAR * DisableChar)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ QRcodePrint dll v5.0
QRcodePrint Использованы: libqrencode + Windows GDI
LPXLOPER12
QRcodePrint(wchar_t * QRcodeText,
LPXLOPER12 sizePixel, LPXLOPER12 pixelColorR,
LPXLOPER12 pixelColorG, LPXLOPER12 pixelColorB,
LPXLOPER12 versionSymbol, LPXLOPER12 levelErrCorrect,
LPXLOPER12 widthImage, LPXLOPER12 heightImage,
LPXLOPER12 quietZone, LPXLOPER12 left,
LPXLOPER12 top)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ TextJoinXLL dll v5.0
TextJoinXLL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v5.0
HelpXLL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Functions ▶ CoCreateGuidXLL dll v5.1
CoCreateGuidXLL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v5.1
LikeXLL Чтобы
получить
сопоставление для специальных знаков, а именно для левой
квадратной скобки ([), вопросительного знака (?), знака номера
(#) и звездочки (*), заключите их в квадратные скобки. Знак
правой квадратной скобки (]) не может использоваться в рамках
группы для сопоставления самому себе, однако может
использоваться за пределами группы как отдельный знак. Восклицательный
знак
(!) в начале charlist означает, что выполняется сопоставление,
если любой знак, кроме знаков, указанных в charlist, будет
найден в аргументе string. При использовании вне квадратных
скобок восклицательный знак сопоставляется самому себе.
Возвращает TRUE or FALSE в зависимости от итога сравнения строки с шаблоном.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Команды XLL в Excel Команды, использующие COM-взаимодействие с Excel, позволяющие полностью использовать объектную модель Excel и сервер событий Excel.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Команды основного меню библиотеки (надстройки) XLL в Excel
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdHelp dll v5.0
XLL
Help
LPXLOPER12 XLLcmdHelp(XCHAR* param, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdOpen dll v5.0
Открыть
LPXLOPER12 XLLcmdOpen(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdSaveAs dll v5.0
Сохр.как LPXLOPER12 XLLcmdSaveAs(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdTracePrecedents dll v5.0
Влияющ. LPXLOPER12 XLLcmdTracePrecedents(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdTraceDependents dll v5.0
Зависим. LPXLOPER12 XLLcmdTraceDependents(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdRemoveArrows dll v5.0
Убрать LPXLOPER12 XLLcmdRemoveArrows(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdSetNumberFormat dll v5.0
Числовой
формат LPXLOPER12 XLLcmdSetNumberFormat(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdIncreaseDecimal dll v5.0
Ув.разряд LPXLOPER12 XLLcmdIncreaseDecimal(XCHAR* param=0,
LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDecreaseDecimal dll v5.0
Ум.разряд LPXLOPER12 XLLcmdDecreaseDecimal(XCHAR* param=0,
LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdSetSheetFormat dll v5.13
Ф.Лист Хранятся данные: обычный формат листа, условный формат, проверка данных, примечания, автофильтр, закрепить области, масштаб, отобразить сетку, показать заголовки, скрытые строки, скрытые столбцы.
LPXLOPER12 XLLcmdSetSheetFormat (XCHAR* param=0, LPXLOPER12 param2)
Параметры param
- отдельный режим диалога для данной команды меню XLL - см. "Диалог".
Возвращаемое значение Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.
Комментарии Для массовых операций с файлами есть два фильтра: для имен файлов и для имен листов в файлах. В обоих фильтрах применяется функция Like()
Visual Basic Sub TestXLLcmdSetSheetFormat() Dim dialogMode, formatName, result 'Режим пользовательского диалога для данной команды, константы: '0 или пусто – значение по умолчанию (то, что выбрано в меню) '1 - Всё включено (рекомендуется). '2 - Отключить пользовательские сообщения. '3 - Отключить информацию в статус-баре Excel. '4 - Отключить пользовательские сообщения + информацию в статус-баре Excel. '5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только кодом в командах меню, в первом параметре. dialogMode = "1"
'Имя сохранения нужного формата (сохраняется в пользовательской форме). formatName = "Мой сохраненный формат"
'Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка. 'Если второй аргумент пропущен - выводится пользовательская форма. result = Application.RUN("XLLcmdSetSheetFormat", dialogMode, formatName) Debug.Print result
'примеры вариантов запуска: '1.вывод пользовательской формы Debug.Print Application.RUN("XLLcmdSetSheetFormat", "1")
'2.отключение всех пользовательских сообщений, в.ч. ошибок (вывод ошибки только как результат выполнения функции) Debug.Print Application.RUN("XLLcmdSetSheetFormat", "5", formatName)
End Sub
Python from win32com import client
input_xll = r'C:\Users\...\AppData\Roaming\Microsoft\AddIns\BedvitXLL64.xll' input_file = r'C:\Users\...\Documents\Test.xlsb'
app = client.DispatchEx("Excel.Application") app.Visible = True app.RegisterXLL(input_xll) workbook = app.Workbooks.Open(input_file) app.Application.Run("XLLcmdSetSheetFormat", "1", "Мой сохраненный формат") app.Application.Quit() del app
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdTextToNumber dll v5.1
Число Начиная с версии 5.4 - можно настраивать свой список символов Unicode для удаления из числа (см. подробнее.) Особенности: + максимальная длина строки для преобразования в ячейке - 8190 символов. + если выделена одна ячейка, обрабатывается весь лист + в процессе выполнения команды все скрытые ячейки будут показаны. + по умолчанию будут удалены из числа: пробел Ch(32), апостроф Ch(39), неразрывный пробел Ch(160) + список символов Unicode к удалению из числа можно настроить. + этот список символов к удалению применяется только для строк, которые удалось преобразовать в число (удалив эти символы), т.е. в результате - для чисел. Если строку не удалось преобразовать в число - строка выводится полностью, со всеми изначальными символами. + новый список символов сохраняется автоматически, при удачном выполнении команды. + список символов Unicode к удалению можно, при необходимости, сбросить на список по умолчанию. LPXLOPER12
XLLcmdTextToNumber(XCHAR* param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdNumberToText dll v5.1
Текст Особенности: + максимальная длина строки для преобразования в ячейке - 8190 символов. + если выделена одна ячейка, обрабатывается весь лист + в процессе выполнения команды все скрытые ячейки будут показаны.
LPXLOPER12 XLLcmdNumberToText(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdTranspose dll v5.0
Трансп LPXLOPER12 XLLcmdTranspose(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Имена
(группа)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdVisibleHiddenName dll v5.0
Показать
скрытые имена LPXLOPER12 XLLcmdVisibleHiddenName(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDeleteErrorName dll v5.0
Удалить
ошибочные имена
LPXLOPER12 XLLcmdDeleteErrorName(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDeleteNames dll v5.0
Удалить
все имена LPXLOPER12 XLLcmdDeleteNames(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
УФ->Ф
(группа)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdConditionalFormatToFormat dll v5.0
Условный
формат в обычный
LPXLOPER12 XLLcmdConditionalFormatToFormat(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdConditionalFormatToFormatAllSheets dll v5.0
Условный
формат в обычный - все
листы LPXLOPER12 XLLcmdConditionalFormatToFormatAllSheets(XCHAR*
param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdFindSummands dll v5.0
Поиск
сл. LPXLOPER12 XLLcmdFindSummands(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDuplicateValues dll v5.0
Повторы
Особенности: Повторы внутри группы выделяются одинаковым цветом. Цвета уникальные для каждой группы и каждый раз генерируются случайным образом. Ограничения
Excel - количество уникальных форматов/стилей ячеек (разных
цветов): 65 490.
LPXLOPER12 XLLcmdDuplicateValues(XCHAR* param=0,
LPXLOPER12 param2) Пример:
Option Explicit Sub TestXLLcmdDuplicateValues() Dim dialogMode, paint
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdFindValues dll v5.0
Найти
LPXLOPER12 XLLcmdFindValues(XCHAR* param=0, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdSheets dll v5.0
Листы LPXLOPER12 XLLcmdSheets(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdErrors dll v5.0
Ошибки
Команда выводит на новый лист список всех ячеек текущей книги с описанием и ссылкой для каждой ячейки, содержащей ошибку или текст похожий на ошибку. По
умолчанию проверяется следующий текст похожий на ошибку (можно
не проверять, выбрав другой ответ в первоначальном диалоге
команды): #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, #NULL!, #Н/Д, #ЗНАЧ!, #ССЫЛКА!, #ДЕЛ/0!, #ЧИСЛО!, #ИМЯ?, #ПУСТО! Проверяются ошибки в итогах формулы в ячейке, в сводной таблице, в таблице. Обрабатываются только видимые листы.
LPXLOPER12 XLLcmdErrors(XCHAR* param=0, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Связи
(группа)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdLinksWorkBook dll v5.0
Список
связей
на другие книги LPXLOPER12
XLLcmdLinksWorkBook(XCHAR* param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdLinksRangeWorkBook dll v5.0
Список ячеек со связями на другие книги
LPXLOPER12 XLLcmdLinksRangeWorkBook(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdBreakLinksSheet dll v5.0
Разорвать
связи
на ЛИСТЕ LPXLOPER12
XLLcmdBreakLinksSheet(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdCompactValues dll v5.0
Упл.данные
Уплотнить
данные,
удалив пустые (не содержащие данные) строки и столбцы.
Обрабатывается весь лист. Эту команду нельзя отменить. В
процессе выполнения команды все скрытые ячейки будут показаны.
LPXLOPER12 XLLcmdCompactValues(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdA1R1C1ReferenceStyle dll v5.0
A1<->R1C1 LPXLOPER12 XLLcmdA1referenceStyle(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdArrayUnPivot dll v5.17
Сл.трансп.
Особенности: Уровни заголовка (сверху над данными), будут транспонированы в столбцы, а данные под ними в один итоговый столбец, см. рис. Созданная таблица будет выгружена на новый лист или несколько листов, если не поместится на один. XLL API: Возвращает
код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!,
#ЧИСЛО! - если ошибка.
Пример:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDataLoadFromExcelSheets dll v5.17
Загрузить
Особенности, что умеет: >собирать данные для разных шаблонов с заголовками и данными >объединять данные из разных шаблонов с заголовками и данными >фильтровать данные по любому столбцу и с любым условием >выгружать только необходимые столбцы для каждого шаблона >загружать данные из файлов нужной папки и нужного уровня вложенных подпапок >фильтровать файлы по имени >фильтровать листы Excel по имени >хранить любое количество настроенных шаблонов для дальнейшего использования >выгружать
итоговые данные на указанный лист Excel или в указанную
сводную таблицу LPXLOPER12
XLLcmdDataLoadFromExcelSheets (XCHAR*
param=0,
LPXLOPER12
param2) Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка. Примеры
использования на языках Visual Basic и Python
Visual Basic Sub TestXLLcmdSetSheetFormat() Dim dialogMode, saveName, result 'Режим пользовательского диалога для данной команды, константы: '0 или пусто – значение по умолчанию (то, что выбрано в меню) '1 - Всё включено (рекомендуется). '2 - Отключить пользовательские сообщения. '3 - Отключить информацию в статус-баре Excel. '4 - Отключить пользовательские сообщения + информацию в статус-баре Excel. '5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только кодом в командах меню, в первом параметре. dialogMode = "1"
'Имя нужного пользовательского сохранения (сохраняется в пользовательской форме). saveName = "Имя моего сохранения"
'Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка. 'Если второй аргумент пропущен - выводится пользовательская форма. result = Application.RUN("XLLcmdDataLoadFromExcelSheets", dialogMode, saveName) Debug.Print result
'примеры вариантов запуска: '1.вывод пользовательской формы Debug.Print Application.RUN("XLLcmdDataLoadFromExcelSheets", "1")
'2.отключение всех пользовательских сообщений, в.ч. ошибок (вывод ошибки только как результат выполнения функции) Debug.Print Application.RUN("XLLcmdDataLoadFromExcelSheets", "5", saveName)
End Sub
Python from win32com import client
input_xll = r'C:\Users\...\AppData\Roaming\Microsoft\AddIns\BedvitXLL64.xll' input_file = r'C:\Users\...\Documents\Test.xlsb'
app = client.DispatchEx("Excel.Application") app.Visible = True app.RegisterXLL(input_xll) workbook = app.Workbooks.Open(input_file) app.Application.Run("XLLcmdDataLoadFromExcelSheets", "1", "Имя моего сохранения") app.Application.Quit() del app
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Face
(группа)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdCreateMenuFaceID dll v5.0
Вывести
LPXLOPER12 XLLcmdCreateMenuFaceID(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDeleteMenuFaceID dll v5.0
Удалить LPXLOPER12
XLLcmdDeleteMenuFaceID(XCHAR* param=0, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdCopyFormula dll v5.0
Copy LPXLOPER12
XLLcmdCopyFormulaLocal(XCHAR* param=0, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdPasteFormula dll v5.0
Paste LPXLOPER12
XLLcmdPasteFormulaLocal(XCHAR* param=0, LPXLOPER12
param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdVBAModuleStore dll v5.0
VBA store - beta-версия, эксперимент LPXLOPER12 XLLcmdVBAModuleStore(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdRangeStore dll v5.0
Хранилище диапазонов формул/значений с возможностью шифрования алгоритмами AES. Хранение
и шифрование диапазонов формул/значений с листа Excel в файле
пользовательских сохранений, шифрование данных алгоритмами AES
на листе Excel, шифрования файла пользовательских сохранений.
(см. https://bedvit.ru/xll/crypto/) XLL API:
UPD:
20.06.2024
BedvitXLL.dll_v5.8
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Архив
(группа)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
v(version)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
f(file)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdRegisterBedvitCOM dll v5.0 BedvitCOM: OFF/ON/R LPXLOPER12 XLLcmdRegisterBedvitCOM(XCHAR*
param=0, LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdMenuLanguage dll v5.0
Язык LPXLOPER12 XLLcmdMenuLanguag (XCHAR* param=0, LPXLOPER12 param2) param
- отдельный режим диалога для данной команды меню XLL - см.
"Диалог".
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdDialogMode dll v5.0
Диалог Задается
в меню XLL для всех команд - как значение "по умолчанию".
Пользовательский функционал. Для
разработчика, дополнительно, кодом можно задать свое,
отдельное значение для каждой команды XLL API
- в первом параметре (на время выполнения этой команды), см.
константы ниже. Константы: 0 или пусто – значение по умолчанию (то, что выбрано в меню) 1
- Всё включено (рекомендуется). 5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только программно в командах XLL API - кодом в первом параметре = '5'
LPXLOPER12 XLLcmdDialogMode(XCHAR* param=0, LPXLOPER12
param2)
Option Explicit Sub TestXLLcmdDialogMode() Dim dialogMode, dialogModeNew 'Режим пользовательского диалога для данной команды (на время выполнения команды), константы: '0 или пусто – значение по умолчанию (то, что выбрано в меню) '1 - Всё включено (рекомендуется). '2 - Отключить пользовательские сообщения. '3 - Отключить информацию в статус-баре Excel. '4 - Отключить пользовательские сообщения + информацию в статус-баре Excel. '5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только кодом в командах меню, в первом параметре. dialogModeNew = "1" 'Назначаем новый режим "по умолчанию" для всех команд dialogModeNew = "2" 'выполняем команду и смотрим новый режим пользовательского диалога по умолчанию для команд меню XLL (в меню). Debug.Print Application.RUN("XLLcmdDialogMode", dialogMode, dialogModeNew) End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdXLLAPIList dll v5.0 XLL
API Надстройка BedvitXLL имеет свое API для возможности использования функционала надстройки в других инструментах/языках/скриптах. Все
команды XLL (с префиксом XLLcmd) зарегистрированы в Excel и
их можно вызывать с нужными параметрами с помощью Application.RUN
(см. пример ниже) Клик на контрол-список XLL API в меню надстройки - выводит список всех зарегистрированных в Excel команд XLL. Формат списка: Имя команды меню XLL/Имя кнопки/Описание Пример использования API в VBA (Excel), Python (Excel): Visual Basic Sub TestXLLcmdHelp() Dim dialogMode, result
'Режим
пользовательского диалога для данной команды, константы: '0 или пусто – значение по умолчанию (то, что выбрано в меню) '1 - Всё включено (рекомендуется). '2 - Отключить пользовательские сообщения. '3 - Отключить информацию в статус-баре Excel. '4 - Отключить пользовательские сообщения + информацию в статус-баре Excel. '5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только кодом в командах меню, в первом параметре.
dialogMode
= "1"
'Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка. result = Application.RUN("XLLcmdHelp", dialogMode) Debug.Print result
End Sub Python from win32com import client
input_xll = r'C:\Users\...\AppData\Roaming\Microsoft\AddIns\BedvitXLL64.xll' input_file = r'C:\Users\...\Documents\Test.xlsb'
app = client.DispatchEx("Excel.Application") app.Visible = True app.RegisterXLL(input_xll) workbook = app.Workbooks.Open(input_file) app.Application.Run("XLLcmdHelp", "1") app.Application.Quit() del app
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdMenuSetting dll v5.0
МЕНЮ
LPXLOPER12 XLLcmdMenuSetting(XCHAR* param=0,
LPXLOPER12 param2)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Команды библиотеки (надстройки) XLL не в меню
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
XLL ▶ Commands ▶ XLLcmdE12xlSet dll v5.3
XLLcmdE12xlSet
Данные помещаются в том же формате, в котором эти данные были изначально в значении или в массиве, т.е. без преобразования. Использована функция xlSet из Excel C API.
LPXLOPER12 XLLcmdE12xlSet(XCHAR * param,
LPXLOPER12 param2, LPXLOPER12 pxReference,
LPXLOPER12 pxValue) pxReference - Прямоугольная ссылка (адрес), описывающая целевую ячейку или ячейки. Адрес должен описывать смежные ячейки. pxValue - Значение или значения, помещаемые в ячейку или ячейки.
Аргумент pxValue pxValue может быть значением или массивом. Если это значение, этим значением заполняется весь диапазон назначения. Если это массив, элементы массива помещаются в соответствующие расположения в прямоугольнике.
Если для четвертого аргумента используется горизонтальный массив, он дублируется вниз, чтобы заполнить весь прямоугольник. Если используется вертикальный массив, он дублируется вправо для заполнения всего прямоугольника. Если вы используете прямоугольный массив, и он слишком мал для прямоугольного диапазона, в который вы хотите его поместить, этот диапазон заполняется исходными данными размером с массив, а остальной диапазон заполняется #Н/Д.
Если целевой диапазон меньше исходного массива, значения копируются до пределов целевого диапазона, а лишние данные из массива игнорируются.
Чтобы очистить элемент прямоугольника назначения, используйте элемент массива типа Empty в исходном массиве. Чтобы очистить весь прямоугольник назначения, опустите четвертый аргумент.
Ограничения Невозможно отменить xlSet. Кроме того, он удаляет все сведения об отмене, которые могли быть доступны ранее. XlSet может помещать в ячейки только константы, а не формулы. Максимальная длина помещаемой строки 8190 символов.
Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.
Visual Basic Sub TestXLLcmdE12xlSet() Dim i, testSize As Long: testSize = 2 Dim arrOrValue: ReDim arrOrValue(1 To testSize, 1 To 1)
For i = 1 To testSize arrOrValue(i, 1) = Str(i) 'MAX количество символов для ячейки: 8190 Next
'Варианты использования: '1.Выводим массив или значение по указанному диапазону на лист Excel Debug.Print Application.RUN("XLLcmdE12xlSet", "", 0, Range("a1:a2").Address, arrOrValue)
'2. Помещаем в диапазон значение "1" Debug.Print Application.RUN("XLLcmdE12xlSet", "", 0, Range("b1:b2").Address, "1")
'3. Выводим массив по указанному диапазону на лист Excel, первый элемент = Empty arrOrValue(1, 1) = Empty 'первый элемент Empty Debug.Print Application.RUN("XLLcmdE12xlSet", "", 0, Range("c1:c2").Address, arrOrValue)
'4 Очищаем заданный диапазон от данных [d1:d5] = 2 'заполняем данными (2) диапазон для теста Debug.Print Application.RUN("XLLcmdE12xlSet", "", 0, Range("d1:d2").Address) ' очищаем в заданном диапазоне
End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
DLL c COM интерфейсом. Реализованы dual-интерфейсы с Automation-совместимыми типами данных, структур (поддержка как раннего связывания (статистической линковки), так и позднего (динамической). Раннее - предпочтительнее в части скорости (на 50% быстрее).
Регистрация COM реализовано как под админом, так и под пользователем (актуально в офисной части клиентов).
Регистрация стандартная: Админ: Regsvr32 "FullName.DLL" Пользователь: Regsvr32 /i /n "FullName.DLL"
Удалить из реестра: Regsvr32 /u "FullName"
Главная страница библиотеки BedvitCOM (здесь можно посмотреть примеры, скачать надстройку)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Класс целых чисел с арифметикой (BignumArithmeticInteger). Реализовано два класса: класс целых чисел с арифметикой (BignumArithmeticInteger) и класс чисел с плавающей точкой (BignumArithmeticFloat). При создании экземпляра класса создается массив из длинных чисел и арифметикой. К Bignum числам можно обращаться по индексам в массиве.
BignumArithmeticInteger (Bignum) увеличивается в памяти по мере расчета - автоматически, перераспределяя память. Размер
чисел
ничем не ограничен, кроме вашей оперативной памяти.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Help dll v4.0
Help
HTML Справка
(без
параметров). Открывает html-страницу с описанием свойств и
методов класса.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Bignum dll v4.0
Bignum
BSTR
Bignum(LONG Bignum, LONG BignumBase=10)
= BSTR
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Sign dll v4.0
Sign
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Even dll v4.0
Even
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Compare dll v4.0
Compare
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ BignumSet dll v4.0
BignumSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Sum dll v4.0
Sum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ SumL dll v4.0
SumL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Abs dll v4.0
Abs
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Negate dll v4.0
Negate
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Subtract dll v4.0
Subtract
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ SubtractL dll v4.0
SubtractL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Multiply dll v4.0
Multiply
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ MultiplyL dll v4.0
MultiplyL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Divide dll v4.0
Divide
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ DivideL dll v4.0
DivideL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Power dll v4.0
Power
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Clone dll v4.0
Clone
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ RootRem dll v4.0
RootRem
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Factorial dll v4.0
Factorial
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Fibonacci dll v4.0
Fibonacci
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ LucNum dll v4.0
LucNum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ FileSet dll v4.0
FileSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ FileGet dll v4.0
FileGet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ Clear dll v4.0
Clear
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticInteger ▶ BignumArraySize dll v4.0
BignumArraySize
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Класс BignumArithmeticFloat
Класс чисел с плавающей точкой (BignumArithmeticFloat). Реализовано два класса: класс целых чисел с арифметикой (BignumArithmeticInteger) и класс чисел с плавающей точкой (BignumArithmeticFloat). При создании экземпляра класса создается массив из длинных чисел и арифметикой. К Bignum числам можно обращаться по индексам в массиве.
BignumArithmeticFloat (Bignum)
-
задается изначально, т.к. дробь может быть бесконечной (по
умолчанию принимается минимальный размер). Проект основан на исходниках (С++) библиотеки MPIR, Edition 3.0.0. (https://github.com/wbhart/mpir).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Help dll v4.0
Help
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ SizeBits dll v4.0
SizeBits
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Bignum dll v4.0
Bignum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Sign dll v4.0
Sign
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Compare dll v4.0
Compare
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ SizeBitsSet dll v4.0
SizeBitsSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ BignumSet dll v4.0
BignumSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Sum dll v4.0
Sum
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ SumL dll v4.0
SumL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Abs dll v4.0
Abs
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Subtract dll v4.0
Subtract
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ SubtractL dll v4.0
SubtractL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Multiply dll v4.0
Multiply
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ MultiplyL dll v4.0
MultiplyL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Divide dll v4.0
Divide
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ DivideL dll v4.0
DivideL
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Root dll v4.0
Root
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Negate dll v4.0
Negate
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Power dll v4.0
Power
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Clone dll v4.0
Clone
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ FileSet dll v4.0
FileSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ FileGet dll v4.0
FileGet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ Clear dll v4.0
Clear
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ BignumArraySize dll v4.0
BignumArraySize
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ BignumArithmeticFloat ▶ GetToBignumInt dll v4.0
GetToBignumInt
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Класс VBA
Сборник инструментов, не вошедших в другие классы.
+хеширование строки разными алгоритмами SHA (+ новейшие SHA3) +получить/удалить любые символы Unicode из строки +удалить из текста лишние пробелы +поиск вхождения подстроки в строку +заменить одну подстроку на другую +поиск строки в одном массиве с выводом данных из второго массива (из соответствующей позиции найденного значению в первом массиве)
Генератор QR-кода + конвертации графических форматов из одного в другой
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArraySortS dll v4.0
ArraySortS Параметры метода: 1.array_in_out - указатель на массив (ввод/вывод) 2.sort_order - порядок сортировки: 0-по возрастанию, 1-по убыванию 3.key_1 - ключи сортировки (индекс столбца или строки) по умолчанию - первый столбец/строка 4.key_2 5.key_3 6.sort_orientation - ориентация сортировки (0 - по строкам, 1 - по столбцам, 2- целый массив вывод строка-столбец, 3- целый массив вывод столбец-строка) 7.delete_duplicates - удаляем дубликаты (в одномерных массивах) 8.out_array_index - выводим индексы, "булево" 1/0 (тогда основной массив array_in_out - не меняется, выводятся данные в index_array_out) 9.index_array_out - одномерный массив с индексами (с учетом всех ключей), если задан out_array_index=1
Все параметры метода, кроме входящего массива - опциональные (с значениями по умолчанию - 0 (ключи-1)) Метод "ArraySort" работает через Variant, т.к. на некоторых скриптовых языках SAFEARRAY ходит через границы COM, только в обертке VARIANT (без изобретения костылей).
Пример тестирования и использования в VBA (элементарно через CreateObject("BedvitCOM.VBA")):
Visual Basic Sub Test_arr_sort() 'Dim bVBA As BedvitCOM.VBA: Set a = New BedvitCOM.VBA 'ранее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim testSize As Long: testSize = 2000000 Dim arr_index, arrTmp, i As Long, J As Long, t
''''''''''''1х массив''''''''''''''''''''''' Dim Arr1: ReDim Arr1(-5 To testSize) As String Dim Arr2: ReDim Arr2(-5 To testSize, -2 To 3) As String
'arr(5) - NULL - проверка для сортировки пустых Arr1(6) = 0 Arr1(7) = "Test_arr_sort" For i = 8 To testSize Arr1(i) = Format$(Int(Rnd * testSize), "0000000") '30% дубликатов Next
arrTmp = Arr1 '! t = Timer bVBA.ArraySortS arrTmp Debug.Print "Простая сорт. 1х массива, по возрастанию (по умолч.): " & Timer - t & " сек."
arrTmp = Arr1 '!! t = Timer bVBA.ArraySortS arrTmp, 1, , , , , 1, 0, 0 Debug.Print "Простая сорт. по убыванию 1x массива с удалением" & ((UBound(arrTmp) - LBound(arrTmp)) / (testSize - LBound(arrTmp)) - 1) * 100 & "%: " & Timer - t & " сек."
'arrTmp = arr - начальный массив не меняется, поэтому темповый - не нужен '! t = Timer bVBA.ArraySortS Arr1, 1, , , , , , 1, arr_index Debug.Print "Вывод индексов для 1х массива, сортировка по убыванию:" & Timer - t & " сек."
''''''''''''2х массив''''''''''''''''''''''' 'arr(5) - NULL - проверка для сортировки пустых Arr2(6, 2) = 0 Arr2(7, 2) = "Test_arr_sort" For i = 8 To testSize For J = -2 To 3 Arr2(i, J) = Format$(Int(Rnd * testSize), "0000000") '30% дубликатов Next Next
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, , , , 2, 0, 0, 0 Debug.Print "Сортировка всего 2х массива - вывод строка-столбец: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 5, , , 3, 0, 0, 0 Debug.Print "Сортировка всего 2х массива - вывод столбец-строка " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp Debug.Print "Простая сортировка 2х массива: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer '! bVBA.ArraySortS arrTmp, 0, 3, , , , , 1, arr_index Debug.Print "Вывод индексов для 2х массива, по указанному столбцу: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 5, , , 1, 0, 0, 0 Debug.Print "Сортировка 2х массива по 5му столбцу: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer '! bVBA.ArraySortS arrTmp, 0, 8, , , 1, , 1, arr_index Debug.Print "Вывод индексов для 2х массива, по 8й строке: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 8, , , 1, 0, 0, 0 Debug.Print "Сортировка 2х массива по 8й строке: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 1, 2, 3, 0, , 1, arr_index Debug.Print "Вывод индексов для 2х массива, по 1,2,3му столбцу: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 1, 2, 3, 0, 0, 0, 0 Debug.Print "Сортировка 2х массива по 1,2,3му столбцу: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 8, 9, 10, 1, 0, 1, arr_index Debug.Print "Вывод индексов для 8,9,10й строке: " & Timer - t & " сек."
arrTmp = Arr2 '! t = Timer bVBA.ArraySortS arrTmp, 0, 8, 9, 10, 1, 0, 0, 0 Debug.Print "Сортировка 2х массива по 8,9,10й строке: " & Timer - t & " сек."
Set bVBA = Nothing End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ FilterUnicodeChar dll v4.0
FilterUnicodeChar Параметры метода: 1. StringIn - входящая строка 2. Второй параметр (EnableChar) - символы, включаемые в итоговую строку (через "-" указывается диапазон, сам "-" выводится если его поставить первым символом в шаблоне) 3. Третий параметр (DisableChar) - символы, исключаемые из итоговой строки (через "-" указывается диапазон, сам "-"удаляется если его поставить первым символом в шаблоне). Последние два параметра - не обязательные. Можно задавать любой из них, можно все два, можно никакой - тогда выводится первоначальная строка
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ LikeUnicodeChar dll v4.0
LikeUnicodeChar Параметры метода: 1.stringIn - входящая строка 2.maskChar - маска/шаблон (через "-" указывается диапазон, сам "-" выводится/удаляется если его поставить первым символом в шаблоне) 3.invertMask - инвертировать маску (сравнение, исключая символы маски) Возвращает булево.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
Trim Параметры метода: 1.StringIn - входящая строка
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
InStr Параметры метода: 1.StringIn - строка в которой производим поиск 2.StringFind - подстрока для поиска в StringIn 3.Start - позиция с которой начинаем поиск в строке
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
Replace
Параметры метода: 1.StringIn - строка в которой производим поиск 2.StringFind - подстрока для поиска и замены в StringIn 3.StringReplace - подстрока на которую заменяем StringFind 3.Start - позиция с которой начинаем поиск и замены подстрок в строке 4.Count - количество замен
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArraySortV dll v4.0
ArraySortV Использованы параллельные алгоритмы сортировки. (библиотеки
PPL от
Мicrosoft) Параметры метода: 1.array_in_out - указатель на массив (ввод/вывод) 2.key_1 - ключи сортировки (порядковый номер столбца, начиная с 1), по умолчанию - первый столбец. 3.sort_order1 - порядок сортировки для key_1: 0-по возрастанию (по умолчанию для всех), 1-по убыванию 4.key_2 - по умолчанию - не участвует 5.sort_order2 - порядок сортировки для key_2 6.key_3 - по умолчанию - не участвует 7.sort_order3 - порядок сортировки для key_3 Ключи задаются по порядку, т.е. сразу указать 3й - нельзя. Начиная с версии 1.0.5.3 8.key_and_sort_order_next - дает возможность отсортировать любое количество полей с индивидуальным порядком сортировки для каждого. Задается текстовой строкой, в том же формате, как и первые 3 параметра ("номер столбца, порядок сортировки" - пример: "4, 0, 5, 0, ..."). Тестовый пример см. ниже.
Начиная с версии 1.0.5.3 сортировка по любому количеству полей с индивидуальным порядком сортировки для каждого.
Visual Basic Sub Test_arr_sort_10_key() 'Dim a As BedvitCOM.VBA: Set a = New BedvitCOM.VBA 'ранее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim i, j, t, testSize As Long: testSize = 1000000
Dim ArrV: ReDim ArrV(0 To testSize, 0 To 9)
For i = 0 To testSize For j = 0 To 9 ArrV(i, j) = CLng(Rnd * 2) Next Next
t = Timer bVBA.ArraySortV ArrV, 1, 0, 2, 0, 3, 0, "4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0" Debug.Print "Cортировка VARIANT 2х массива, по возрастанию по 10 ключам: " & Timer - t & " сек." [a1:j1000000] = ArrV
End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
Transpose Параметры метода: 1.array_in_out - указатель на массив (ввод/вывод)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ QRcodePrint dll v4.0
QRcodePrint
HRESULT QRcodePrint([in] BSTR QRcodeText, [in, defaultvalue(L"")] BSTR FileOut, [in, defaultvalue(4)] LONGLONG FormatImageOut, [in, defaultvalue(4)] LONGLONG SizePixel, [in, defaultvalue(0)] LONGLONG PixelColorR, [in, defaultvalue(0)] LONGLONG PixelColorG, [in, defaultvalue(0)] LONGLONG PixelColorB, [in, defaultvalue(0)] LONGLONG VersionSymbol, [in, defaultvalue(1)] LONGLONG LevelErrCorrect, [in, defaultvalue(4)] LONGLONG QuietZone, [out, retval] BSTR* StringOutRetval);
Параметры/Аргументы функции QRcodePrint : 1. QRcodeText - что печатаем, строка(обязательное). 2. FileOut - куда печатаем, полное имя файла - не обязательное, по умолчанию используется пользовательский "TEMP" + уникальное имя файла (GUID). Расширение теперь добавляется автоматически, если оно не указано. Если указан файл без папок - файл помещается в ту же папку, где располагается зарегистрированная библиотека. 3. FormatImageOut - формат изображения (код в функции/формат):0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)-по умолчанию. (этот и остальные аргументы не обязательны) 4. SizePixel - размер пикселя (модуля), по умолчанию 4 (минимально рекомендуемый) 5. PixelColorR =0 цвет RGB если хотим цветную картинку (по умолчанию черный) 6. PixelColorG = 0 7. PixelColorB =0 8. VersionSymbol - версия QR кода (1-40) (по умолчанию = 0-выбор автоматом) 9. LevelErrCorrect - уровень коррекции ошибок (0-3, по умолчанию = 1 ~15%) 10. QuietZone - Размер в модулях зоны тишины (>=0, по умолчанию = 4). Quiet zone — это область, отделяющая границу штрих-кода от фона и других изображений. Начиная с v1.0.4.8 11.При удаче, возвращается полное имя файла созданного изображения, при неудаче выводится ошибка и возвращается "Empty"
Функционал: 1. Сохранение изображения в форматы: bmp, jpeg, gif, tiff, png. 2. QR-кода сохраняется в монохромное изображение, где формат позволяет, т.е. до 1 бита на пиксель. В любом цвете RGB. К примеру размер .PNG 1140*1140 пикселей (1 бит на пиксель) - 2КБ. 3. Возможность задавать размер модуля (пикселя QR). 4. Возможность задавать цвет в RGB 5. Возможность задавать версию QR кода. 6. Возможность задавать уровень коррекции ошибок. 7. Возможность изменить толщину рамки - quiet zone (начиная с v1.0.4.8) 8. Емкость QR-кода составляет до 7000 цифр или 4000 символов 9. (Отдельно) Конвертации вышеперечисленных форматов из одного в другой
Добавил отдельный метод (ConvertFormatImage(), см. ниже в WIKI) для конвертации вышеперечисленных форматов из одного в другой, для случаев конвертации сторонних изображений.
Пример использования:
Option Explicit Sub QR_Generate() Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim fileName As String: fileName = Environ("Temp") & "\QR.png" 'печать QR в файл (в пользовательский Temp) Dim convertToFile As String: convertToFile = Environ("Temp") & "\QR.tif" Dim QRcodeText As String: QRcodeText = "https://www.cyberforum.ru/blogs/829006/blog6514.html" Dim resultFileName As String 'печать QR в файл (в пользовательский Temp) и вывести на лист Excel resultFileName = bVBA.QRcodePrint(QRcodeText, fileName) 'с аргументами по умолчанию ActiveSheet.Shapes.AddPicture resultFileName, False, True, 0, 0, -1, -1 resultFileName = bVBA.QRcodePrint(QRcodeText, fileName, 4, 4, 255, 0, 0, 0, 1, 4) 'с нужными аргументами ActiveSheet.Shapes.AddPicture resultFileName, False, True, 200, 0, -1, -1 'Конвертировать формат изображения bVBA.ConvertFormatImage fileName, convertToFile, 3 'формат (tiff), см. в описании End Sub В одну строку: Visual Basic Sub QR_Generate_Fast() ActiveSheet.Shapes.AddPicture CreateObject("BedvitCOM.VBA").QRcodePrint("Информация для печати", Environ("Temp") & "\QR.png"), False, True, 0, 0, -1, -1 End Sub 2. 1C - регистрируем COM нужной разрядности (можно под пользователем), далее код (по аналогии с Excel)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ConvertFormatImage dll v4.0
ConvertFormatImage Параметры/Аргументы метода ConvertFormatImage : 1. FileIn - полное имя файла (обязательное). 2. FileOut - полное имя файла (обязательное). 3. FormatImageOut - нужный формат (обязательное). Код в функции/формат:0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ GetRowsCountCSVansi dll v4.0
GetRowsCountCSVansi
Beta-версия функции, тестирование и описание Подробнее на форуме.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ GetRowCSVansi dll v4.0
GetRowCSVansi Beta-версия функции, тестирование и описание Подробнее на форуме.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ FindRowsInCSVansi dll v4.0
FindRowsInCSVansi Beta-версия функции, тестирование и описание Подробнее на форуме.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ SortDeleteDuplicateRowsCSVansi dll v4.0
SortDeleteDuplicateRowsCSVansi Beta-версия функции, тестирование и описание Подробнее на форуме.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ SHAstrUTF8 dll v4.0
SHAstrUTF8 Использованы
исходники Crypto++. Параметры функции: 1.stringIn- входящая строка 2.versionSHA- версия алгоритма SHA 3.charLower - вывод результата в нижнем регистре (опционально, по умолчанию FALSE)
Поддержка следующих алгоритмов (+ новейшие SHA3): versionSHA = 1, SHA1 versionSHA = 2224, SHA2_224 versionSHA = 2256, SHA2_256 versionSHA = 2384, SHA2_384 versionSHA = 2512, SHA2_512 versionSHA = 3224, SHA3_224 versionSHA = 3256, SHA3_256 versionSHA = 3384, SHA3_384 versionSHA = 3512, SHA3_512
Пример использования: Visual Basic Sub SHA_1() Dim bCOM As New BedvitCOM.VBA Debug.Print bCOM.HashStringSHA("String", 1) 'VersionSHA = 1, SHA1 End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
MDstrUTF8 Использованы
исходники Crypto++ Параметры функции: 1.StringIn - входящая строка 2.versionMD- версия алгоритма MD 3.charLower - вывод результата в нижнем регистре (опционально, по умолчанию FALSE)
Поддержка следующих алгоритмов: versionMD = 5, MD5
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ AESstrUTF8 dll v4.0
AESstrUTF8 Использованы
исходники Crypto++. Параметры функции: 1.StringIn - входящая строка 2.key- ключ должен быть длинной 128, 256 bit (16, 32 Byte). 3.decrypt - decrypt/encrypt (true/false) 4.mode - Supporter mode : ECB, CBC, OFB, CFB, CBC-CTS, CTR (индексы см.ниже) 5.initializationVectorIV - an initialization vector (IV) 6.str_format_hex - вывод результата в формате Hex/Base64 (true/false) 7.secureZeroMemoryKey – безопасное зануление памяти для входящего ключа
Шифрование
128
или 256 bit зависит от длины ключа, который введет
пользователь 16 или 32 символа (EN - 1 байт и RU - 2 байта на
символ в utf-8 соответственно)
Алгоритмы шифрования AES: 1 - "Без шифрования" 2 - "AES256:ECB" 3 - "AES256:CBC" 4 - "AES256:OFB" 5 - "AES256:CFB" 6 - "AES256:CBC-CTS" 7 - "AES256:CTR"
Примечание: эта функция низкоуровневая, где разработчику нужно самому подбирать длину ключа –только 128 или 256 бит. Более высокоуровневая функция VariantAES256Encrypt() и VariantAES256Decrypt(), где пароль может быть любой длинны, который преобразуется в 256-битный ключ в самой функции.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ Array2Dto1D dll v4.0
Array2Dto1D Параметры метода: 1.array_in_out - массив, который нужно преобразовать 2.lLbound1 - нижняя граница нового массива (по умолчанию=0)
Пример использования в VBA (Excel):
Visual Basic Sub TestArrayDtoD() Dim r As New BedvitCOM.VBA 'раннее связывание Dim t, arr, i arr = [a1:a1000000] t = Timer For i = 1 To 1000000 r.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) r.Array1Dto2D arr, 1, 1 'в двухмерный с 1м столбцом, нижние границы измерений = 1 Next Debug.Print "Time: " & Timer - t & " sec." End Sub
начиная с v2.0.0.2
Visual Basic Sub TestArrayDtoD_() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arr arr = [a1:b10] ' забираем массив 2 столбца, 10 строк bVBA.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) bVBA.Array1Dto2D arr, 1, 1, 10 'преобразуем в двухмерный с 10ю столбцами и 2 строками, нижние границы измерений = 1, порядок данных сохраняется исходный Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr 'нового размера массив со старым порядком данных End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ Array1Dto2D dll v4.0
Array1Dto2D Начиная
с v2.0.0.2 можно задавать размер первой размерности, вторая
рассчитывается автоматически, в зависимости от общего
количества элементов. Размер для размерности должен задаваться
так, чтобы общее количество элементов массива было кратно
задаваемому размеру. Порядок данных сохраняется первоначальный. 1.array_in_out - массив, который нужно преобразовать 2.lLboundCol - нижняя граница нового массива, 1е измерение - столбцы (по умолчанию=0) 3.lLboundRow - нижняя граница нового массива, 2е измерение - строки (по умолчанию=0) 4.cElementsCol - размер для первой размерности, кол-во столбцов (по умолчанию=1) (начиная с v2.0.0.2)
Пример использования в VBA (Excel):
Visual Basic Sub TestArrayDtoD() Dim r As New BedvitCOM.VBA 'раннее связывание Dim t, arr, i arr = [a1:a1000000] t = Timer For i = 1 To 1000000 r.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) r.Array1Dto2D arr, 1, 1 'в двухмерный с 1м столбцом, нижние границы измерений = 1 Next Debug.Print "Time: " & Timer - t & " sec." End Sub
начиная с v2.0.0.2
Visual Basic Sub TestArrayDtoD_() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arr arr = [a1:b10] ' забираем массив 2 столбца, 10 строк bVBA.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) bVBA.Array1Dto2D arr, 1, 1, 10 'преобразуем в двухмерный с 10ю столбцами и 2 строками, нижние границы измерений = 1, порядок данных сохраняется исходный Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr 'нового размера массив со старым порядком данных End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayFilterV dll v4.0
ArrayFilterV Инструмент для фильтрации одномерного и двухмерного СОМ-массива (тип данных VARIANT) для любого количества столбцов, с любым количеством условий. Реализован
параллельный
алгоритм фильтрации (поддержка любого количества логических
процессоров). 1. array_in - массив входящий (одномерный, двухмерный), тип данных VARIANT. 2. array_parameters - массив задаваемых параметров, тип данных VARIANT (6 параметров для одного условия, можно для одного и того же столбца, можно для разных). Количество условий не ограничено. Условия можно создать из списка, можно создать двухмерный массив и заполнить, можно забрать сразу с листа Excel. 3. array_out_index - режим вывода: 0- отфильтрованный массив, 1-массив индексов 4. array_out - массив результатов
Условия
в
массиве параметров применяются в порядке следования, если нет
скобок или внутри скобок. Скобки задают приоритет выполнения
условий (стандартно), потом "И" и "ИЛИ" в порядке очередности.
Array(,"(((",
1,
Содержит, "маша", , ИЛИ, , 1, Содержит, "вася", ")", И, , 1,
НеРавно, "маша иванова", ")", ИЛИ, "(", 2, НеРавно, "'1", ,
ИЛИ, , 2, Равно, 1, "))", И, "(", 3, БольшеРавно, 12.5, , И, ,
3, МеньшеРавно, 55.8, ")")
Простые примеры (с замером скорости на 10 млн строк) и сложные (с выводом условий и результата):
Visual Basic Option Explicit 'операторы (aliases) псевдонимы Const ИЛИ = 0, И = 1, РАВНО = 2, СОДЕРЖИТ = 8, НЕРАВНО = 512 + 2, МЕНЬШЕРАВНО = 1 + 2, БОЛЬШЕРАВНО = 4 + 2, МЕНЬШЕ = 1, БОЛЬШЕ = 4
'ОДНОМЕРНЫЙ МАССИВ, ПРОСТЫЕ УСЛОВИЯ, бинарная маска без слова-псевдонима Sub TestArrayFilterV_1() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arrResult 'первоначальный массив данных Dim arrV: arrV = Array(1, 0, 1, 0, 1, 0) 'массив условий (фильтр по первому столбцу, значение = 1) Dim p: p = Array(, , 1, 2, 1, "")
' фильтруем =============================== bVBA.ArrayFilterV arrV, p, 0, arrResult '======================================== Debug.Print UBound(arrResult) + 1 'начало с 0 End Sub
'ДВУХМЕРНЫЙ МАССИВ, ПРОСТЫЕ УСЛОВИЯ, бинарная маска в виде слова-псевдонима Sub TestArrayFilterV_2() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arrResult, r, c, t, x Dim sizeRow As Long: sizeRow = 10000000 Dim sizeCol As Long: sizeCol = 1 Dim arrV: ReDim arrV(1 To sizeRow, 1 To sizeCol) 'первоначальный массив данных, далее заполняем рандомно
'массив условий (фильтр по первому столбцу, значение = 1) Dim p: p = Array(, , 1, РАВНО, 1, "")
'заполняем первоначальный массив с данными For r = 1 To sizeRow For c = 1 To sizeCol arrV(r, c) = CLng(Rnd * 2) Next Next
t = Timer ' фильтруем =============================== bVBA.ArrayFilterV arrV, p, 0, arrResult '======================================== Debug.Print Timer - t Debug.Print UBound(arrResult) + 1 'начало с 0 End Sub
'ДВУХМЕРНЫЙ МАССИВ, СЛОЖНЫЕ УСЛОВИЯ, бинарная маска в виде слова-псевдонима Sub TestArrayFilterV_3() Dim arrParam, arrTest, arrRes, bCOMvba As Object: Set bCOMvba = CreateObject("BedvitCOM.VBA")
Cells.ClearContents
'создаем тестовый массив arrTest = Array("маша иванова", "'1", 13, "маша иванова", 1, 13, "маша", "'1", 14, "вася", "'1", 14, "паша", 1, 50, "вася", 2, 52, "маша", 1, 60, "вася", 1, 65) bCOMvba.Array1Dto2D arrTest, 1, 1, UBound(arrTest) / 3: bCOMvba.Transpose arrTest Cells(1, 1).Resize(UBound(arrTest, 1), UBound(arrTest, 2)) = arrTest
'запись условий для фильтра:(((c1 like "маша" or like "вася") and c1<>"маша иванова") or (c2<>"1" or c2=1)) and (c3>=12,5 and c3<=55,8) arrParam = Array(, "(((", 1, СОДЕРЖИТ, "маша", , ИЛИ, , 1, СОДЕРЖИТ, "вася", ")", И, , 1, НЕРАВНО, "маша иванова", ")", ИЛИ, "(", 2, НЕРАВНО, "'1", , ИЛИ, , 2, РАВНО, 1, "))", И, "(", 3, БОЛЬШЕРАВНО, 12.5, , И, , 3, МЕНЬШЕРАВНО, 55.8, ")") 'ИЛИ ТАК arrParam = Array( _ , "(((", 1, СОДЕРЖИТ, "маша", , _ ИЛИ, , 1, СОДЕРЖИТ, "вася", ")", _ И, , 1, НЕРАВНО, "маша иванова", ")", _ ИЛИ, "(", 2, НЕРАВНО, "'1", , _ ИЛИ, , 2, РАВНО, 1, "))", _ И, "(", 3, БОЛЬШЕРАВНО, 12.5, , _ И, , 3, МЕНЬШЕРАВНО, 55.8, ")" _ ) bCOMvba.Array1Dto2D arrParam, 1, 1, UBound(arrParam) / 6: bCOMvba.Transpose arrParam Cells(1, 5).Resize(UBound(arrParam, 1), UBound(arrParam, 2)) = arrParam
'применяем фильтр bCOMvba.ArrayFilterV arrTest, arrParam, 0, arrRes Cells(1, 12).Resize(UBound(arrRes, 1), UBound(arrRes, 2)) = arrRes
End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayCharLowerV dll v4.0
ArrayCharLowerV Параметры функции: 1.array_in_out – массив строк, который нужно преобразовать (на месте)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayCharUpperV dll v4.0
ArrayCharUpperV Параметры функции: 1.array_in_out - массив, который нужно преобразовать (на месте)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayCharToNumV dll v4.0
ArrayCharToNumV Параметры функции: 1.array_in_out - массив, который нужно преобразовать (на месте)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayNumToCharV dll v4.0
ArrayNumToCharV Преобразовать
все
данные в тип: String (в
массиве). Параметры функции: 1.array_in_out - массив, который нужно преобразовать (на месте)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
Version
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
FileName
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ VariantCopy dll v4.0
VariantCopy Параметры функции: 1. variantIn – исходный VARIANT, с которого делается копия
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
ArrayDtoD Можно
задавать
размер второй размерности, первая рассчитывается
автоматически, в зависимости от общего количества элементов.
Размер для размерности должен задаваться так, чтобы общее
количество элементов массива было кратно задаваемому размеру.
Порядок данных сохраняется первоначальный. Параметры функции: 1. arrayInOut – массив для преобразования «на месте» 2. lLboundRow – нижняя граница для строк 3. cElementsRow – количество строк 4. lLboundCol – нижняя граница для столбцов 5. cElementsCol – количество столбцов 4. lLbound3 – нижняя граница для третьего измерения 5. cElements3 – количество элементов третьего измерения …
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayReDim dll v4.0
ArrayReDim
Информация
сохраняется,
если не обрезается принудительно. Для созданный блоков массива
задаются значения Empty. 1.arrayInOut - массив (Variant) 2.lLboundRow - новая нижняя граница для строк 3.rowStartChange - изменения для начала измерения строк ("-"обрезаем, "+"добавляем новые строки) 4.rowEndChange - изменения для конца измерения строк ("-"обрезаем, "+"добавляем новые строки) 5.lLboundCol - новая нижняя граница для столбцов 6.colStartChange - изменения для начала измерения столбцов ("-"обрезаем, "+"добавляем новые столбцы) 7.colEndChange - изменения для конца измерения столбцов ("-"обрезаем, "+"добавляем новые столбцы)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
ArraySize Параметры функции: 1. arrayIn – массив, для которого нужно получить количество всех элементов.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
SplitS Параметры функции: 1. stringIn – строка для деления на подстроки 2. delimiter – разделитель, по которому нужно разделить строку 3. setLowerBound – нижняя граница для создаваемого массива 4. multiThreading - включение многопоточных вычислений
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
SplitV Параметры функции: 1. stringIn – VARIANT содержащий строку для деления на подстроки 2. delimiter – разделитель, по которому нужно разделить строку 3. setLowerBound – нижняя граница для создаваемого массива 4. multiThreading - включение многопоточных вычислений
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayCopyStoV dll v4.0
ArrayCopyStoV Параметры функции: 1. arrayIn – входящий массив 2. multiThreading - включение многопоточных вычислений 3. arrayOut – получаемый массив
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayConvertStoV dll v4.0
ArrayConvertStoV Параметры функции: 1. arrayInOut – массив меняемый «на месте» 2. multiThreading - включение многопоточных вычислений
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ArrayConvertVtoS dll v4.0
ArrayConvertVtoS Параметры функции: 1. arrayInOut – массив меняемый «на месте» 2. multiThreading - включение многопоточных вычислений
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0
Like Параметры
функции: Чтобы
получить
сопоставление для специальных знаков, а именно для левой
квадратной скобки ([), вопросительного знака (?), знака номера
(#) и звездочки (*), заключите их в квадратные скобки. Знак
правой квадратной скобки (]) не может использоваться в рамках
группы для сопоставления самому себе, однако может
использоваться за пределами группы как отдельный знак. Восклицательный
знак
(!) в начале charlist означает, что выполняется сопоставление,
если любой знак, кроме знаков, указанных в charlist, будет
найден в аргументе string. При использовании вне квадратных
скобок восклицательный знак сопоставляется самому себе.
Возвращает TRUE or FALSE в зависимости от итога сравнения строки с шаблоном.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ RegexMatchECMAScript dll v4.0
RegexMatchECMAScript Параметры функции: 1.stringIn – строка в которой ищем 2. patternIn – шаблон
Везде использована стандартная библиотека C++, функция regex_match(), грамматика ECMAScript, на https://regex101.com/ можно проверить шаблон в разделе "EcmaScript (JavaScript)".
Синтаксис шаблона регулярных выражений ECMAScript
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ UnicodeCharCodeGet dll v4.0
UnicodeCharCodeGet Параметры функции: 1.stringIn – строка в которой смотрим символ 2.position – позиция символа в строке (отсчет с 1)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ UnicodeCharCodeSet dll v4.0
UnicodeCharCodeSet Параметры функции: 1.stringIn – строка в которой меняем символ 2.position – позиция символа в строке (отсчет с 1)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ CoCreateGuid dll v4.0
CoCreateGuid Параметры функции: 1. liteMode – режим вывода, стандартный = 0 и упрощенный =1, ("{E06AD101-5907-474B-8506-A7CD0149537F}" и "c883f002273a4c63ae52f91c787ba1e9" соответственно).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ VariantSerialization dll v5.0
VariantSerialization Поддерживаются базовые типы и массивы. Объекты не сериализуются. В
некоторой степени - аналог
CComVariant::ReadFromStream и
CComVariant::WriteToStream. Параметры функции: 1. variantIn - входящий VARIANT - значение или массив значений 2. byteArrayOutRetval - массив байтов получаемый
Особенности: 1. Cериализация в байтовый массив 2. Размер массива не может превышать 2^32 элементов (около 4Гбайт). Это ограничение самого COM - массива. В С++ (в другом контейнере) сохранял файлы боле 4,5 Гб. 3. Реализован похожий механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк.
Пример использования Visual Basic Sub TestVariantSerialization() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim t, arr, byteArr
Range("A:B").value2 = "Tst Srl ёя" t = Timer byteArr = bVBA.VariantSerialization(Range("A:B").value2) arr = bVBA.VariantDeserialization(byteArr) Debug.Print "VariantSerialization+VariantDeserialization " & Timer - t & " s." Range("D:E").value2 = arr End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ VariantDeserialization dll v5.0
VariantDeserialization Поддерживаются базовые типы и массивы. Объекты не сериализуются. В
некоторой степени - аналог CComVariant::ReadFromStream
и
CComVariant::WriteToStream. Параметры функции: 1. byteArrayIn - входящий массив байтов 2. byteArrayOutRetval – получаемый VARIANT
Особенности: 1. Cериализация в байтовый массив 2. Размер массива не может превышать 2^32 элементов (около 4Гбайт). Это ограничение самого COM - массива. В С++ (в другом контейнере) сохранял файлы боле 4,5 Гб. 3. Реализован похожий механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк.
Пример использования Visual Basic Sub TestVariantSerialization() 'Dim bVBA As New BedvitCOM.VBA 'раннее связывание Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim t, arr, byteArr
Range("A:B").value2 = "Tst Srl ёя" t = Timer byteArr = bVBA.VariantSerialization(Range("A:B").value2) arr = bVBA.VariantDeserialization(byteArr) Debug.Print "VariantSerialization+VariantDeserialization " & Timer - t & " s." Range("D:E").value2 = arr End Sub
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ VariantAES256Encrypt dll v5.0
VariantAES256Encrypt Использованы
исходники Crypto++. Параметры функции: 1. variantIn - входящий массив или отдельное значение 2. password - пароль 3. secureZeroMemoryPassword - безопасное обнуление значения пароля 4. salt - соль (к паролю) 5. algorithmCrypto - алгоритмы шифрования AES: 1 - "Без шифрования" 2 - "AES256:ECB" 3 - "AES256:CBC" 4 - "AES256:OFB" 5 - "AES256:CFB" 6 - "AES256:CBC-CTS" 7 - "AES256:CTR" byteArrayOutRetval - получаемый результат: зашифрованная строка (результат всегда в виде строки).
Функционал: + Можно шифровать как отдельные значения, так и диапазоны/массивы. + Тип данных и алгоритм шифрования запоминается при зашифровке, и их нужно указывать только при шифровании + Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому + Зашифрованные значения или массивы - независимые, т.е. можно каждый отдельный массив или значение зашифровать со своим паролем, можно зашифровать дважды (для гиков) + Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк) - используется алгоритм сжатия WinAPI:XPRESS_HUFF + Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов). + Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).
Примечание: эта функция более высокоуровневая, чем AESstrUTF8(), рекомендуется использовать её, из-за ряда преимуществ (см. выше).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ VariantAES256Decrypt dll v5.0
VariantAES256Decrypt Использованы
исходники Crypto++. Параметры функции: 1. byteArrayIn - входящий байтовый массив(строка) для расшифровки 2. password - пароль 3. secureZeroMemoryPassword - безопасное обнуление значения пароля 4. salt - соль (к паролю) 5. algorithmCrypto - алгоритмы шифрования AES: 1 - "Без шифрования" 2 - "AES256:ECB" 3 - "AES256:CBC" 4 - "AES256:OFB" 5 - "AES256:CFB" 6 - "AES256:CBC-CTS" 7 - "AES256:CTR" variantOutRetval - получаемый результат: первоначальный, расшифрованный VARIANT
Функционал: + Можно шифровать как отдельные значения, так и диапазоны/массивы. + Тип данных и алгоритм шифрования запоминается при зашифровке, и их нужно указывать только при шифровании + Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому + Зашифрованные значения или массивы - независимые, т.е. можно каждый отдельный массив или значение зашифровать со своим паролем, можно зашифровать дважды (для гиков) + Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк) - используется алгоритм сжатия WinAPI:XPRESS_HUFF + Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов). + Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).
Примечание: эта функция более высокоуровневая, чем AESstrUTF8(), рекомендуется использовать её, из-за ряда преимуществ (см. выше).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ VBA ▶ ValueFormatExcelSheet dll v5.6
ValueFormatExcelSheet Параметры функции: 1. valueIn – входящие данные, отдельное значение или массив 2.valueOutRetval – исходящие данные в формате выгрузки на лист Excel (для текста проставляется апостроф (') первым символом).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
dll v4.0 Класс UnorderedMap Неупорядоченный
ассоциативный контейнер, содержащий пары ключ-значение с
уникальными ключами. Поиск, вставка и удаление элементов
имеют среднюю постоянную сложность. Использован стандартный контейнер С++: std::unordered_map (хеш-таблица).
КЛЮЧ: можно использовать любые данные (не включая ссылки на массивы и объекты), ключ хранится как строка (конвертируется, если нужно, из другого типа данных). ЗНАЧЕНИЕ: можно использовать любые данные (включая ссылки на массивы, объекты и даже на другую хеш-таблицу) (см. https://bedvit.ru/com/unorderedmap/)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ Find dll v4.0
Find
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ Insert dll v4.0
Insert
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ InsertOrAssign dll v4.0
InsertOrAssign
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ Erase dll v4.0
Erase
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ Clear dll v4.0
Clear
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ Size dll v4.0
Size
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ RangeSet dll v4.0
RangeSet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ RangeGet dll v4.0
RangeGet
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ SetArray1D dll v4.0
SetArray1D
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
COM ▶ UnorderedMap ▶ GetArray1D dll v4.0
GetArray1D
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||