Wiki

 

Обновлено:

 

25.02.2025

 

 

Содержит описание функционала библиотек BedvitXLL.xll (надстройка для Excel) и BedvitCOM.dll с постоянными ссылками и версией, в которой этот функционал появился.

Если не сработал якорь для конкретного раздела, воспользуйтесь оглавлением или поиском (Ctrl+F).

 

 

 

 

 

Оглавление

 

 

Библиотека (надстройка) XLL для Excel

Функции листа Excel

Функции листа Excel, категория: XLLBignumArithmeticFloat

SumFloat

SubtractFloat

MultiplyFloat

DivideFloat

PowerFloat

RootFloat

Функции листа Excel, категория: XLLBignumArithmeticInteger

SumInteger

SubtractInteger

MultiplyInteger

DivideInteger

PowerInteger

ModInteger

FactorialInteger

ConvertBaseInteger

Функции листа Excel, категория: XLL

FilterUnicodeChar

QRcodePrint

TextJoinXLL

HelpXLL

CoCreateGuidXLL

LikeXLL

Команды XLL

Основное меню библиотеки (надстройки) XLL в Excel

XLL Help

Открыть

Сохр.как

Влияющ.

Зависим.

Убрать

Числовой формат

Ув.разряд

Ум.разряд

Ф.Лист

Число

Текст

Трансп

Имена (группа)

Показать скрытые имена

Удалить ошибочные имена

Удалить все имена

УФ->Ф (группа)

Условный формат в обычный

Условный формат в обычный - все листы

Поиск сл.

Повторы

Найти

Листы

Ошибки

Связи (группа)

Список связей на другие книги

Список ячеек со связями на другие книги

Разорвать связи на ЛИСТЕ

Упл.данные

A1<->R1C1

Face (группа)

Вывести

Удалить

Copy

Paste

VBA store - beta-версия, эксперимент

Range store

Архив (группа)

v(version)

f(file)

BedvitCOM: OFF/ON/R

Язык

Диалог

XLL API

МЕНЮ

Команды библиотеки (надстройки) XLL не в меню

XLLcmdE12xlSet  

 

 

Библиотека COM

Класс BignumArithmeticInteger

Help

Bignum

Sign

Even

Compare

BignumSet

Sum

SumL

Abs

Negate

Subtract

SubtractL

Multiply

MultiplyL

Divide

DivideL

Power

Clone

RootRem

Factorial

Fibonacci

LucNum

FileSet

FileGet

Clear

BignumArraySize

Класс BignumArithmeticFloat

Help

SizeBits

Bignum

Sign

Compare

SizeBitsSet

BignumSet

Sum

SumL

Abs

Subtract

SubtractL

Multiply

MultiplyL

Divide

DivideL

Root

Negate

Power

Clone

FileSet

FileGet

Clear

BignumArraySize

GetToBignumInt

Класс VBA

ArraySortS

FilterUnicodeChar

LikeUnicodeChar

Trim

InStr

Replace

ArraySortV

Transpose

QRcodePrint

ConvertFormatImage

GetRowsCountCSVansi

GetRowCSVansi

FindRowsInCSVansi

SortDeleteDuplicateRowsCSVansi

SHAstrUTF8

MDstrUTF8

AESstrUTF8

Array2Dto1D

Array1Dto2D

ArrayFilterV

ArrayCharLowerV

ArrayCharUpperV

ArrayCharToNumV

ArrayNumToCharV

Version

FileName

VariantCopy

ArrayDtoD

ArrayReDim

ArraySize

SplitS

SplitV

ArrayCopyStoV

ArrayConvertStoV

ArrayConvertVtoS

Like

RegexMatchECMAScript

UnicodeCharCodeGet

UnicodeCharCodeSet

CoCreateGuid

VariantSerialization

VariantDeserialization

VariantAES256Encrypt

VariantAES256Decrypt

ValueFormatExcelSheet

Класс UnorderedMap

Find

Insert

InsertOrAssign

Erase

Clear

Size

RangeSet

RangeGet

SetArray1D

GetArray1D

 

 

 

 

 

 

 

 

 

 

XLL

 

Библиотека (надстройка) 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 (весь функционал BedvitCOM ).

НЕ нужно устанавливать или удалять в системе, это один файл (+файл сохранений .bin), подключается как "обычная" надстройка .xla, .xlam или открывается как файл Excel

НЕ нужен .NET Framework, НE нужны какие-либо другие библиотеки, НЕ нужна регистрация или активация, НЕ нужно подключение к Интернет

 

 

 

Главная страница надстройки BedvitXLL (здесь можно посмотреть примеры, скачать надстройку)

 

 

 

 

 

XLL Functions

 

Функции листа Excel

 

Высокопроизводительные функции рабочих листов Excel, написанные на С/С++ и экспортируемые из XLL. Во многом аналогичные стандартным функциям Excel.

 

 

 

 

  

 

Функции листа Excel, категория: XLLBignumArithmeticFloat

 

 

 

 

XLL Functions SumFloat

dll v5.0

 

SumFloat

Сумма обычных/длинных чисел.

LPXLOPER12 SumFloat(LPXLOPER12 xlop1, XCHAR * xstr1, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка) или диапазон таких чисел.
xstr1 - число обычное, длинное  (строка)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробной виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions SubtractFloat

dll v5.0

 

SubtractFloat

Разница обычных/длинных чисел.

LPXLOPER12 SubtractFloat(LPXLOPER12 xlop1, XCHAR * xstr1, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка)
xstr1 - число обычное, длинное  (строка)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробной виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions MultiplyFloat

dll v5.0

 

MultiplyFloat

Произведение обычных/длинных чисел.

LPXLOPER12 MultiplyFloat(LPXLOPER12 xlop1, XCHAR * xstr1, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка) или диапазон таких чисел.
xstr1 - число обычное, длинное  (строка)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробной виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions DivideFloat

dll v5.0

 

DivideFloat

Деление обычных/длинных чисел.

LPXLOPER12 DivideFloat(LPXLOPER12 xlop1, XCHAR * xstr1, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка)
xstr1 - число обычное, длинное  (строка)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробной виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions PowerFloat

dll v5.0

 

PowerFloat

Возведение в степень обычных/длинных чисел.

LPXLOPER12 PowerFloat(LPXLOPER12 xlop1, int exponent, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка)
exponent - экспонента (показатель степени)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробной виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions RootFloat

dll v5.0

 

RootFloat

 

Квадратный корень из обычных/длинных чисел.

LPXLOPER12 RootFloat(LPXLOPER12 xlop1, int precisionOut, XCHAR * separatorIn, XCHAR * separatorOut, int bignumBaseIn, int bignumBaseOut, int eNotationOFF)
Параметры функции:
xlop1 - число обычное, длинное (строка)
precisionOut - точность длинного числа, количество значимых символов в мантиссе числа (по умолчанию 32 тыс. знаков в E-нотации, что бы поместилось в ячейку Excel или меньше, в случае вывода в виде дробной нотации, за счет нулей)
separatorIn - разделитель целой и дробной части входящего числа (по умолчанию берется из Excel)
separatorOut - разделитель целой и дробной части возвращаемого/расчетного числа (по умолчанию берется из Excel)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).
eNotationOFF - отключение E-нотации. В таком случае выводится в дробном виде для выбранной базы счисления.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

 

Функции листа Excel, категория: XLLBignumArithmeticInteger 

 

 

 

 

 

XLL Functions SumInteger

dll v5.0

 

SumInteger

Сумма обычных/длинных чисел.

LPXLOPER12 SumInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка) или диапазон таких чисел.
xstr1 - число обычное, длинное  (строка)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions SubtractInteger

dll v5.0

 

SubtractInteger

Разница обычных/длинных чисел.

LPXLOPER12 SubtractInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка)
xstr1 - число обычное, длинное  (строка)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions MultiplyInteger

dll v5.0

 

MultiplyInteger

Произведение обычных/длинных чисел.

LPXLOPER12 MultiplyInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка) или диапазон таких чисел.
xstr1 - число обычное, длинное  (строка)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions DivideInteger

dll v5.0

 

DivideInteger

Деление обычных/длинных чисел.

LPXLOPER12 DivideInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка)
xstr1 - число обычное, длинное  (строка)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions PowerInteger

dll v5.0

 

PowerInteger

Возведение в степень обычных/длинных чисел.

LPXLOPER12 PowerInteger(LPXLOPER12 xlop1, int exponent, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка)
exponent - экспонента (показатель степени)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions ModInteger

dll v5.0

 

ModInteger

Деление обычных/длинных чисел и возврат остатка (делит два числа и возвращает только оставшуюся часть)

LPXLOPER12 ModInteger(LPXLOPER12 xlop1, XCHAR * xstr1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка)
xstr1 - число обычное, длинное  (строка)
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions FactorialInteger

dll v5.0

 

FactorialInteger

Факториал натурального числа n

LPXLOPER12 FactorialInteger(int n, int bignumBaseOut)
Параметры функции:
n -
натуральное число
bignumBaseIn -
база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut -
база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

XLL Functions ConvertBaseInteger

dll v5.0

 

ConvertBaseInteger

Конвертация обычного/длинного числа из одной базы счисления в другую.

LPXLOPER12 ConvertBaseInteger(LPXLOPER12 xlop1, int bignumBaseIn, int bignumBaseOut)
Параметры функции:
xlop1 - число обычное, длинное (строка) входящее
bignumBaseIn - база счисления входящего числа 2-62 (по умолчанию, если не указана = 10).
bignumBaseOut - база счисления возвращаемого/расчетного числа 2-62 (по умолчанию, если не указана = 10).

Возвращает строку (длинное число) если команда выполнена успешно и #NUM!(#ЧИСЛО!) если ошибка.

 

 

 

 

 

 

Функции листа Excel, категория: XLL

 

 

 

 

XLL Functions FilterUnicodeChar

dll v5.0

 

FilterUnicodeChar

Получить/удалить любые символы Unicode из строки (отфильтровать)

LPXLOPER12 FilterUnicodeChar(XCHAR * StringIn, XCHAR * EnableChar, XCHAR * DisableChar)
Параметры функции:
1.
StringIn - входящая строка
2. EnableChar - символы включаемые в итоговую строку (через "-" указывается диапазон, сам "-" выводится/удаляется если его поставить первым символом или последним в шаблоне)
3. DisableChar - символы исключаемые из итоговой строки (через "-" указывается диапазон).

Последние два параметра - не обязательные. Можно задавать любой из них, можно все два, можно никакой - тогда выводится первоначальная строка.

Возвращает строку с отфильтрованными символами Юникода.

 

 

 

 

 

XLL Functions QRcodePrint

dll v5.0

 

QRcodePrint

Печатает QR-код в ячейке листа Excel (см. https://bedvit.ru/xll/qr/)

Использованы: 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)
Параметры/Аргументы функции QRcodePrint :
1. QRcodeText - что печатаем, строка(обязательное).
2. SizePixel - размер пикселя (не картинки, а квадратика в QR), по умолчанию 4 (минимально рекомендуемый)
3. PixelColorR =0 цвет RGB (0-255) если хотим цветную картинку (по умолчанию черный)
4. PixelColorG = 0
5. PixelColorB =0
6. VersionSymbol - версия QR кода (1-40) (по умолчанию = 0-выбор автоматом), см. ниже
7. LevelErrCorrect - уровень коррекции ошибок (0-3, по умолчанию = 1 ~15%), см. ниже
8.WidthImage - постоянная ширина (т.к. при кодировании разного размера данных размер QR меняется). Если хотим постоянный размер - проставляем. По умолчанию "-1" (размер фактический)
9.
HeightImage - постоянная высота, тоже, что и п.8
10. QuietZone - Размер в модулях зоны тишины (>=0, по умолчанию = 4). Quiet zone — это область, отделяющая границу штрих-кода от фона и других изображений. Начиная с версии xll - v2.0.1.6
11.Left - отступ от левого верхнего угла ячейки с функцией (рекомендуется оставлять значение по умолчанию = 0)
12.
Top - тоже, что и п.11 (рекомендуется оставлять значение по умолчанию = 0)
п.11,12 рекомендовано использовать, только тогда, когда есть понимание, как это все работает (см. ниже). В обратном случае может быть ситуация, когда изменили размер ячейки или изменили 11 и/или 12 параметр, и теперь QR - печатается в другой ячейке, а в предыдущей он уже не удалится, останется до ручного удаления.

Важно: Ячейка в которую помещается QR-код предварительно очищается от старых версий QR.
Если QR-код больше не нужен можно удалить вручную или задать пустую строку для первого параметра функции (старый QR-код удалится, новый не создастся). Важно! QR-код при этом должен находится (его левый верхний угол) в рамках ячейки, в которой находится функция QRcodePrint(), в противном случай картинка не удалится.

Результат: при удаче, возвращается закодированная в QR-коде строка, при ошибке - "#ЧИСЛО!"

 

 

 

 

 

XLL Functions TextJoinXLL

dll v5.0

 

TextJoinXLL

Объединяет текст из нескольких строк (выделенного диапазона), вставляя между текстовыми значениями указанные разделитель(и). Можно задать массив разделителей. Введенные числа будут считаться текстом.

LPXLOPER12 TextJoinXLL(LPXLOPER12 range, LPXLOPER12 delimiter, BOOL ignoreEmpty)
Параметры функции:
1.range - массив/диапазон строк
2.delimiter - строка-разделитель (опционально = "")
3.ignoreEmpty - игнорировать пустые ячейки в Range (опционально = 0 - не игнорировать)

Аналог TextJoin(ОБЪЕДИНИТЬ) от Microsoft (https://support.microsoft.com/en-gb/office/textjoin-function-357b449a-ec91-49d0-80c3-0e8fc845691c)
Если объединенная строка содержит свыше 32767 символов (ограничение для ячейки), функция вернет ошибку #ЧИСЛО!.

Возвращает строку.

 

 

 

 

 

XLL Functions HelpXLL

dll v5.0

 

HelpXLL

Возвращает строку, содержащую все основные данные по работе надстройки, аналогичные данным в команде меню "XLL Help"

LPXLOPER12 HelpXLL()
Параметры функции:
1.Без параметров

Возвращает строку, содержащую все основные данные по работе надстройки, аналогичные данным в команде меню "XLL Help"

 

 

 

 

 

XLL Functions CoCreateGuidXLL

dll v5.1

 

CoCreateGuidXLL

Создает GUID — уникальное 128-битное целое число, используемое для CLSID и идентификаторов интерфейса.

LPXLOPER12 CoCreateGuidXLL(int liteMode)
Параметры функции:
1. liteMode - режимы вывода: 0 - стандартный "{E06AD101-5907-474B-8506-A7CD0149537F}", 1 - упрощенный  "c883f002273a4c63ae52f91c787ba1e9" (в нижнем регистре без дефисов и фигурных скобок)

Возвращает строку в зависимости от выбранного режима вывода.

 

 

 

 

 

XLL Functions LikeXLL

dll v5.1

 

LikeXLL

Используется для сравнения двух строк.

LPXLOPER12 LikeXLL(XCHAR * string, XCHAR * pattern)
Параметры функции:
1. string - входящая строка
2. pattern - шаблон, маска для сравнения со строкой

Аналог оператора LIKE от Microsoft (https://learn.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/like-operator)
с таким же набором правил составления маски и с таким же возвращаемым результатом

Предоставляет универсальное средство для сравнения строк. Возможности сопоставления шаблона позволяют использовать подстановочные знаки, списки знаков или диапазоны знаков в любой комбинации, чтобы сопоставить строки. В следующей таблице представлены знаки, разрешенные для использования в аргументе pattern, и объясняется, чему они соответствуют:
Знаки в pattern - Сопоставление в string
? - Любой отдельный знак.
* - Ноль или больше знаков.
# - Любая однозначная цифра (0–9).
[ charlist ] - Любой отдельный знак, представленный в charlist.
[ !charlist ] - Любой отдельный знак, не представленный в charlist.

Группа из одного или нескольких символов ( charlist ), заключенная в квадратные скобки ([ ]), может использоваться для сопоставления с любым одним символом в строке и может включать практически любой код символов, включая цифры.

Примечание:

Чтобы получить сопоставление для специальных знаков, а именно для левой квадратной скобки ([), вопросительного знака (?), знака номера (#) и звездочки (*), заключите их в квадратные скобки. Знак правой квадратной скобки (]) не может использоваться в рамках группы для сопоставления самому себе, однако может использоваться за пределами группы как отдельный знак.

С помощью дефиса (-), разделяющего нижнюю и верхнюю границы диапазона, charlist может использоваться для определения диапазона знаков. Например, приводит к совпадению, [A-Z] если соответствующая позиция символов в строке содержит прописные буквы в диапазоне от A до Z. Несколько диапазонов могут включаться в квадратные скобки без использования каких-либо разделителей.

Также имеются другие важные правила для сопоставления шаблона:

Восклицательный знак (!) в начале charlist означает, что выполняется сопоставление, если любой знак, кроме знаков, указанных в charlist, будет найден в аргументе string. При использовании вне квадратных скобок восклицательный знак сопоставляется самому себе.
Дефис (-) может отображаться в начале (но после восклицательного знака, если он используется) или в конце charlist для сопоставления самому себе. На любой другой позиции дефис используется для указания диапазона знаков.
При задании диапазона знаков они должны отображаться по возрастающему порядку сортировки (от наименьшего к наибольшему). [A-Z] является допустимым шаблоном, но [Z-A] не является.
Последовательность [] символов считается строкой нулевой длины ("").

 

Возвращает TRUE or FALSE в зависимости от итога сравнения строки с шаблоном.

 

 

 

 

 

XLL Commands

 

Команды XLL в Excel

Команды, использующие COM-взаимодействие с Excel, позволяющие полностью использовать объектную модель Excel и сервер событий Excel.

 

 

 

 

 

 

Команды основного меню библиотеки (надстройки) XLL в Excel

 

 

 

 

XLL Commands XLLcmdHelp

dll v5.0

 

XLL Help

"О Продукте". Форма с информацией о продукте.

LPXLOPER12 XLLcmdHelp(XCHAR* param, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdHelp("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdOpen

dll v5.0

 

Открыть

Открыть и заразить сохраненные настройки и данные

LPXLOPER12 XLLcmdOpen(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdOpen ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdSaveAs

dll v5.0

 

Сохр.как

Сохранить настройки и данные в указанный файл

LPXLOPER12 XLLcmdSaveAs(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdSaveAs ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdTracePrecedents

dll v5.0

 

Влияющ.

Показать влияющие ячейки (на выделенный массив)

LPXLOPER12 XLLcmdTracePrecedents(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdTracePrecedents ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdTraceDependents

dll v5.0

 

Зависим.

Показать зависимые ячейки (от выделенного массива)

LPXLOPER12 XLLcmdTraceDependents(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdTraceDependents ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdRemoveArrows

dll v5.0

 

Убрать

Убрать все стрелки

LPXLOPER12 XLLcmdRemoveArrows(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdRemoveArrows ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdSetNumberFormat

dll v5.0

 

Числовой формат

Числовой формат (NumberFormat) применить к выделенным ячейкам/сохранить в список форматов/удалить из списка форматов

LPXLOPER12 XLLcmdSetNumberFormat(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdSetNumberFormat ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdIncreaseDecimal

dll v5.0

 

Ув.разряд

Увеличить разрядность числа

LPXLOPER12 XLLcmdIncreaseDecimal(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdIncreaseDecimal ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDecreaseDecimal

dll v5.0

 

Ум.разряд

Уменьшить разрядность числа

LPXLOPER12 XLLcmdDecreaseDecimal(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDecreaseDecimal ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdSetSheetFormat

dll v5.13

 

Ф.Лист

Хранение форматов листа и их применение к активному листу или к файлам в выбранных папках.

Хранятся данные: обычный формат листа, условный формат, проверка данных, примечания, закрепить области, масштаб, отобразить сетку, показать заголовки, автофильтр.

 

 

Синтаксис

LPXLOPER12 XLLcmdSetSheetFormat (XCHAR* param=0, LPXLOPER12 param2)

 

 

Параметры

param - режим диалога для команд меню XLL - см. "Диалог"
param2 - имя сохранения нужного формата (сохраняется в пользовательской форме).

 

 

Возвращаемое значение

Возвращает код ошибки: 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 для удаления из числа, см. подробнее.

LPXLOPER12 XLLcmdTextToNumber(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Особенности:

+ максимальная длина строки для преобразования в ячейке - 8190 символов.

+ если выделена одна ячейка, обрабатывается весь лист

+ в процессе выполнения команды все скрытые ячейки будут показаны.

+ по умолчанию будут удалены из числа: пробел Ch(32), апостроф Ch(39), неразрывный пробел Ch(160)

+ список символов Unicode к удалению из числа можно настроить.

+ этот список символов к удалению применяется только для строк, которые удалось преобразовать в число (удалив эти символы), т.е. в результате - для чисел. Если строку не удалось преобразовать в число - строка выводится полностью, со всеми изначальными символами.

+ новый список символов сохраняется автоматически, при удачном выполнении команды.

+ список символов Unicode к удалению можно, при необходимости, сбросить на список по умолчанию.


Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdTextToNumber ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdNumberToText

dll v5.1

 

Текст

Преобразовать выделенные числа/формулы - в значения/формулы, сохраненные как текст (если выделена одна ячейка, обрабатывается весь лист) , см. подробнее.

LPXLOPER12 XLLcmdNumberToText(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 – зарезервирован

 

Особенности:

+ максимальная длина строки для преобразования в ячейке - 8190 символов.

+ если выделена одна ячейка, обрабатывается весь лист

+ в процессе выполнения команды все скрытые ячейки будут показаны.


Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdNumberToText ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdTranspose

dll v5.0

 

Трансп

Транспонирование данных на месте

LPXLOPER12 XLLcmdTranspose(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdTranspose("1") //Включены все сообщения для данной команды

 

 

 

 

 

Имена (группа)

Показать скрытые имена, удалить ошибочные, удалить все имена

 

 

 

 

XLL Commands XLLcmdVisibleHiddenName

dll v5.0

 

Показать скрытые имена

Показать скрытые имена (отобразить в диспетчере имён)

LPXLOPER12 XLLcmdVisibleHiddenName(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdVisibleHiddenName("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDeleteErrorName

dll v5.0

 

Удалить ошибочные имена

Удалить все имена с ошибочными значениями (в т.ч. скрытые, не отображаемые в диспетчере имён)

LPXLOPER12 XLLcmdDeleteErrorName(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDeleteErrorName("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDeleteNames

dll v5.0

 

Удалить все имена

Удалить все имена (в т.ч. скрытые, не отображаемые в диспетчере имён)

LPXLOPER12 XLLcmdDeleteNames(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDeleteNames("1") //Включены все сообщения для данной команды

 

 

 

 

 

УФ->Ф (группа)

Перевести условное форматирование в обычный формат

 

 

 

 

XLL Commands XLLcmdConditionalFormatToFormat

dll v5.0

 

Условный формат в обычный

Перевести условное форматирование в обычный формат ячейки в выделенном диапазоне или на всем листе (в случае, если выделена одна ячейка)

LPXLOPER12 XLLcmdConditionalFormatToFormat(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdConditionalFormatToFormat("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdConditionalFormatToFormatAllSheets

dll v5.0

 

Условный формат в обычный - все листы

Перевести условное форматирование в обычный формат на всех листах текущей книги (листы, защищенные паролем - не обрабатываются)

LPXLOPER12 XLLcmdConditionalFormatToFormatAllSheets(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdConditionalFormatToFormatAllSheets("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdFindSummands

dll v5.0

 

Поиск сл.

Поиск слагаемых для заданной суммы

LPXLOPER12 XLLcmdFindSummands(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdFindSummands("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDuplicateValues

dll v5.0

 

Повторы

Выделить уникальным цветом группы повторов в выделенном диапазоне или на всем листе (в случае, если выделена одна ячейка) и/или вывести статистику. Выделение цветом нельзя отменить!
В процессе выполнения команды все скрытые ячейки будут показаны.

LPXLOPER12 XLLcmdDuplicateValues(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDuplicateValues("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdFindValues

dll v5.0

 

Найти

Найти на текущем листе значения из выделенной ячейки и выделить все ячейки с найденными дубликатами (учитываются значения и результаты формул). «Tab» - переход по найденным (выделенным) ячейкам

LPXLOPER12 XLLcmdFindValues(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdFindValues("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdSheets

dll v5.0

 

Листы

Вывести на новый лист список всех листов текущей книги (с гиперссылкой)

LPXLOPER12 XLLcmdSheets(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdSheets("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdErrors

dll v5.0

 

Ошибки

Вывести на новый лист список всех ячеек текущей книги, содержащих ошибку. Обрабатываются только видимые листы.

LPXLOPER12 XLLcmdErrors(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdErrors("1") //Включены все сообщения для данной команды

 

 

 

 

 

Связи (группа)

Вывести на новый лист список связей на другие книги или список ячеек данной книги, содержащих связи на другие книги.

 

 

XLL Commands XLLcmdLinksWorkBook

dll v5.0

 

Список связей на другие книги

Вывести на новый лист список всех книг, на которые есть связи из данной книги.

LPXLOPER12 XLLcmdLinksWorkBook(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdLinksWorkBook("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdLinksRangeWorkBook

dll v5.0

 

Список ячеек со связями на другие книги


Вывести на новый лист список всех ячеек данной книги, содержащих связи на другие книги.

LPXLOPER12 XLLcmdLinksRangeWorkBook(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdLinksRangeWorkBook("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdBreakLinksSheet

dll v5.0

 

Разорвать связи на ЛИСТЕ

Разорвать связи на текущем ЛИСТЕ с другими ЛИСТАМИ этой книги и ВНЕШНИМИ файлами. Формулы с такими связями при разрыве будут преобразованы в принимаемые на данный момент значения.

LPXLOPER12 XLLcmdBreakLinksSheet(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdBreakLinksSheet ("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdCompactValues

dll v5.0

 

Упл.данные

 

Уплотнить данные, удалив пустые (не содержащие данные) строки и столбцы. Обрабатывается весь лист. Эту команду нельзя отменить. В процессе выполнения команды все скрытые ячейки будут показаны.

LPXLOPER12 XLLcmdCompactValues(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdCompactValues("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdA1R1C1ReferenceStyle

dll v5.0

 

A1<->R1C1

Стиль ссылок A1. Изменение формата ссылок на ячейки в формулах Excel

LPXLOPER12 XLLcmdA1referenceStyle(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdA1referenceStyle("1") //Включены все сообщения для данной команды

 

 

 

 

 

Face (группа)

Коллекция иконок Excel по FaceID (около 32 тыс. штук). Можно вывести на лист

 

 

 

 

XLL Commands XLLcmdCreateMenuFaceID

dll v5.0

 

Вывести

Вывести все возможные иконки Excel в меню (по ID)

LPXLOPER12 XLLcmdCreateMenuFaceID(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdCreateMenuFaceID("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDeleteMenuFaceID

dll v5.0

 

Удалить

Удалить ранее выведенные иконки Excel из меню

LPXLOPER12 XLLcmdDeleteMenuFaceID(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDeleteMenuFaceID("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdCopyFormula

dll v5.0

 

Copy

Копировать формулы для вставки (без смещения адресов). Не используется буфер обмена. Копируются и скрытые ячейки.

LPXLOPER12 XLLcmdCopyFormulaLocal(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdCopyFormulaLocal("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdPasteFormula

dll v5.0

 

Paste

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

LPXLOPER12 XLLcmdPasteFormulaLocal(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdPasteFormulaLocal("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdVBAModuleStore

dll v5.0

 

VBA store - beta-версия, эксперимент

Хранилище VBA модулей

LPXLOPER12 XLLcmdVBAModuleStore(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdVBAModuleStore("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdRangeStore

dll v5.0

 

Range store

Шифрование данных алгоритмами AES на листе Excel, шифрования файла пользовательских сохранений, хранение зашифрованных диапазонов формул/значений с листа Excel в файле пользовательских сохранений (см.
https://bedvit.ru/xll/crypto/)
Использованы исходники Crypto++
 

Алгоритмы шифрования AES:

    1 - "
Без шифрования"
    2 - "AES256:ECB"
    3 - "AES256:CBC"
    4 - "AES256:OFB"
    5 - "AES256:CFB"
    6 - "AES256:CBC-CTS"
    7 - "AES256:CTR"


 Функционал:
+ Можно шифровать как отдельные значения так и диапазоны/массивы.
+ Шифровать можно на листе, шифровать можно сохраняемые диапазоны и шифровать можно и файл пользовательских сохранений.
+ Шифровать данные можно прям на листе Excel, с дальнейшей расшифровкой нужного диапазона или всего листа в виде значений (value2), так и в виде формул (formula).
+ Зашифрованные данные можно хранить в XLL как в виде значений (value2), так и в виде формул (formula). Формула может содержать максимум 8 тыс. символов
+ Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому
+ Тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании. При расшифровки нужен только 1 пароль (повтор пароля нужен только для шифрования, для расшифровки достаточно одного-первого)
+ Зашифрованные диапазоны - независимые, т.е. можно каждый отдельный диапазон зашифровать со своим паролем, можно зашифровать диапазон дважды (для гиков)
+ Реализовано автоматическое распознавание разных блоков зашифрованных диапазонов, с разными алгоритмами и их расшифровка разом (см. видео), но должен быть одинаковый пароль для случаев пакетной распаковки (сразу всего листа)
+ Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк)  - используется алгоритм сжатия WinAPI:XPRESS_HUFF
+ Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов), см. особенности ниже.
+ Данные на листе Excel шифруются для каждой ячейки отдельно (для возможности хранить и расшифровывать данные независимо для каждой ячейки)
+ Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).
+ Для каждой команды есть всплывающие подсказки


Особенности:
+ Сохранять диапазон в списке диапазонов можно в зашифрованном виде или не в зашифрованном (в незашифрованном эффективнее сжимаются сохранения т.к. обрабатываются все дубликаты во всех сохранённых диапазонах, а не частично в отдельном диапазоне), но можно шифровать сам файл пользовательских настроек - эффективность сжатия сохраняется.
+ Есть возможность автоматически определять границы диапазона, выделяя весь лист или целый столбец или целую строку, см. usedrange
+ Добавлена возможность выключать пользовательские сообщения и сообщения в статус-баре Excel


UPD: 03.02.2024 BedvitXLL.dll_v5.1
 
+добавлена возможность использования разных локализаций и разной разрядности Excel при шифровании, дешифровки и сохранении формул/значений (см. видео справку ниже).
+добавлена обработка ошибок на листе Excel при шифровании, дешифровки и сохранении формул/значений.

Справочно: форма для шифрования - МОДАЛЬНАЯ, т.е. что бы выделить новый диапазон нужно щелкнуть на адрес.

 

 

UPD: 20.06.2024 BedvitXLL.dll_v5.8
+ В процессе выполнения команды все скрытые ячейки будут показаны.

 


LPXLOPER12 XLLcmdRangeStore(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdHelp("1") //Включены все сообщения для данной команды

 

 

 

 

 

Архив (группа)

Тестовые команды, beta-функционал или команды, которые устарели или были заменены более новыми (в след. версиях библиотеки эти команды могут быть удалены)

 

 

 

 

 

v(version)

Текущая версия XLL-библиотеки

 

 

 

 

 

f(file)

Версия и расположение активного файла пользовательских настроек (все пользовательские настройки и данные сохраняются в нем сразу же при изменениях)

 

 

 

 

 

XLL Commands XLLcmdRegisterBedvitCOM

dll v5.0

 

BedvitCOM: OFF/ON/R

Регистрация библиотеки BedvitCOM в реестре и автоподключение в References (VBA): OFF/ON/R
OFF -
нет автоподключения (ни в реестре Windows, ни в References (VBA)
ON -
есть автоподключение (и в реестре Windows, и в References (VBA)
R -
только регистрация в реестре Windows (нет автоподключения в References (VBA)
Порядок переключений: OFF->ON->R->OFF

LPXLOPER12 XLLcmdRegisterBedvitCOM(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL
- см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и
Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdHelp("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdMenuLanguage

dll v5.0

 

Язык

Язык основного меню и контекстного меню

LPXLOPER12 XLLcmdMenuLanguag (XCHAR* param=0, LPXLOPER12 param2)

param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdMenuLanguag("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL Commands XLLcmdDialogMode

dll v5.0

 

Диалог

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

Константы:

0 или пусто – значение по умолчанию (то, что выбрано в меню)

1 - Всё включено (рекомендуется).
2 - Отключить пользовательские сообщения.
3 - Отключить информацию в статус-баре Excel.
4 - Отключить пользовательские сообщения + информацию в статус-баре Excel.

5 - Отключить всё (в т.ч. сообщения об ошибках). Можно только кодом в командах меню, в первом параметре.


LPXLOPER12 XLLcmdDialogMode(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdDialogMode("1") //Включены все сообщения для данной команды

 

 

 

 

 

XLL API

Список команд XLL.

Выводится в списке: Имя команды меню XLL/Имя кнопки/Описание

Все Команды XLL (с префиксом XLLcmd) зарегистрированы в Excel и их можно вызывать с нужным параметром.

Пример (VBA):
Application.RUN "XLLcmdHelp", "1" 'Вызов формы с информацией о продукте.

 

 

 

 

 

XLL Commands XLLcmdMenuSetting

dll v5.0

 

МЕНЮ

Настройка меню BedvitXLL (основное + контекстное). Можно включать и отключать элементы меню.

LPXLOPER12 XLLcmdMenuSetting(XCHAR* param=0, LPXLOPER12 param2)
param - режим диалога для команд меню XLL - см. "Диалог"
param2 - зарезервирован

Возвращает код ошибки: 0 - команда выполнена успешно и Error 2036, #NUM!, #ЧИСЛО! - если ошибка.

Пример:
XLLcmdMenuSetting("1") //Включены все сообщения для данной команды

 

 

 

 

 

 

Команды библиотеки (надстройки) XLL не в меню 

 

 

 

 

XLL Commands XLLcmdE12xlSet

dll v5.3

 

XLLcmdE12xlSet

Команда
XLL. Очень быстро помещает значения констант в ячейки или диапазоны.

 

Данные помещаются в том же формате, в котором эти данные были изначально в значении или в массиве, т.е. без преобразования.

Использована функция xlSet из Excel C API.


LPXLOPER12 XLLcmdE12xlSet(XCHAR * param, LPXLOPER12 param2, LPXLOPER12 pxReference, LPXLOPER12 pxValue)
param - командная строка XLL API - см. "XLL API": 1й параметр - Режим диалога для команд меню XLL - см. "Диалог"
param2 –
зарезервирован

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

 

 

 

 

 

COM

 

Библиотека COM

 

DLL c COM интерфейсом. Реализованы dual-интерфейсы с Automation-совместимыми типами данных, структур (поддержка как раннего связывания (статистической линковки), так и позднего (динамической). Раннее - предпочтительнее в части скорости (на 50% быстрее).

 

Регистрация COM реализовано как под админом, так и под пользователем (актуально в офисной части клиентов).

 

Регистрация стандартная:

Админ: Regsvr32 "FullName.DLL"

Пользователь: Regsvr32 /i /n "FullName.DLL"

 

Удалить из реестра:

Regsvr32 /u "FullName" 

 

 

 

Главная страница библиотеки BedvitCOM (здесь можно посмотреть примеры, скачать надстройку)

 

 

 

 

 

COM BignumArithmeticInteger

 

Класс BignumArithmeticInteger

 

Проект основан на исходниках (С++) библиотеки MPIREdition 3.0.0. (https://github.com/wbhart/mpir)

Реализовано два класса: класс целых чисел с арифметикой (BignumArithmeticInteger) и класс чисел с плавающей точкой (BignumArithmeticFloat).

При создании экземпляра класса создается массив из длинных чисел и арифметикой. К Bignum числам можно обращаться по индексам в массиве.

 

BignumArithmeticInteger (Bignum) увеличивается в памяти по мере расчета - автоматически, перераспределяя память.

Размер чисел ничем не ограничен, кроме вашей оперативной памяти.

 

 

 

 

COM BignumArithmeticInteger Help

dll v4.0

 

Help

 

HTML Справка (без параметров). Открывает html-страницу с описанием свойств и методов класса.

void Help()

 

 

 

 

 

COM BignumArithmeticInteger Bignum

dll v4.0

 

Bignum

Принимает и возвращает BSTR строку StringBSTR (задает число или возвращает значение).

 

BSTR Bignum(LONG Bignum, LONG BignumBase=10) = BSTR 
Bignum-индекс длинного числа в массиве. 
BignumBase-база длинного числа (от 2 до 62), по умолчанию = 10.

 

 

 

 

 

COM BignumArithmeticInteger Sign

dll v4.0

 

Sign

Возвращает знак длинного числа

LONG Sign(LONG Bignum)
Возвращаетесли Bignum > 0, 0 если Bignum = 0, и -1 если Bignum < 0.

 

 

 

 

 

COM BignumArithmeticInteger Even

dll v4.0

 

Even

Определяет, является ли Bignum четное или нечетное.

LONG Even(BYTE Bignum)
Возвращает 1 если Bignum четное, 0 если Bignum нечетное.

 

 

 

 

 

COM BignumArithmeticInteger Compare

dll v4.0

 

Compare

Сравнивает два длинных числа.

LONG Compare(LONG Bignum1, LONG Bignum2)
Возвращает 1 если Bignum1 Bignum2, 0 если Bignum1 Bignum2, и -1 если Bignum1 Bignum2.

 

 

 

 

 

COM BignumArithmeticInteger BignumSet

dll v4.0

 

BignumSet

Задает число с параметрами аналогичными методу Bignum().

BignumSet(LONG Bignum, BSTR StringBSTR, LONG BignumBase=10)

 

 

 

 

 

COM BignumArithmeticInteger Sum

dll v4.0

 

Sum

Суммирует два длинных числа.

Sum(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); 
BignumSet = Bignum1 + Bignum2

 

 

 

 

 

COM BignumArithmeticInteger SumL

dll v4.0

 

SumL

Суммирует длинное число с обычным.

SumL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 + LONG_PTR(
х64:LONG_PTR= LONGLONGх32:LONG_PTR= LONG)

 

 

 

 

 

COM BignumArithmeticInteger Abs

dll v4.0

 

Abs

Возвращает модуль числа

Abs
(BYTE BignumSet, BYTE Bignum1); 
Возвращает модуль значения из Bignum1 в BignumSet.

 

 

 

 

 

COM BignumArithmeticInteger Negate

dll v4.0

 

Negate

Задает значение с противоположным знаком

Negate(BYTE BignumSet, BYTE Bignum1); 
Возвращает значение с противоположным знаком из
 Bignum1 в BignumSet. BignumSet = - Bignum1.

 

 

 

 

 

COM BignumArithmeticInteger Subtract

dll v4.0

 

Subtract

Вычитает из одного длинного числа другое

Subtract
(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); 
BignumSet = Bignum1 - Bignum2

 

 

 

 

 

COM BignumArithmeticInteger SubtractL

dll v4.0

 

SubtractL

Вычитает из длинного числа обычное.

SubtractL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 - LONG_PTR.

 

 

 

 

 

COM BignumArithmeticInteger Multiply

dll v4.0

 

Multiply

Умножает одно длинное число на другое. 

Multiply(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); 
BignumSet = Bignum1 * Bignum2.

 

 

 

 

 

COM BignumArithmeticInteger MultiplyL

dll v4.0

 

MultiplyL

Умножает длинное число на обычное. 

MultiplyL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 * LONG_PTR.

 

 

 

 

 

COM BignumArithmeticInteger Divide

dll v4.0

 

Divide

Делит одно длинное число на другое

Divide
(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, BYTE Bignum2); 
При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / Bignum2.

 

 

 

 

 

COM BignumArithmeticInteger DivideL

dll v4.0

 

DivideL

Делит длинное число на обычное.

DivideL
(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, LONG_PTR LONG_PTR); 
При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / LONG_PTR.

 

 

 

 

 

COM BignumArithmeticInteger Power

dll v4.0

 

Power

Возводит в степень длинное число.

Power
(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR);
Возводит в степень LONG_PTR длинное число Bignum1, результат возвращает в BignumSet.  BignumSet = Bignum1 ^ LONG_PTR.

 

 

 

 

 

COM BignumArithmeticInteger Clone

dll v4.0

 

Clone

Копирует одно длинное число в другое.

Clone(BYTE BignumSet, BYTE Bignum1); 
Копирует Bignum1 в BignumSet
BignumSet = Bignum1

 

 

 

 

 

COM BignumArithmeticInteger RootRem

dll v4.0

 

RootRem

Извлекает корень длинного числа

RootRem
(BYTE BignumRoot, BYTE BignumRemainder, BYTE Bignum1, LONG_PTR n_root);
Извлекает корень n_root-степени из Bignum1
Целочисленный результат возвращает в BignumRoot, остаток в BignumRemainder = (n-th root)√ Bignum1.

 

 

 

 

 

COM BignumArithmeticInteger Factorial

dll v4.0

 

Factorial

Возвращает факториал для длинного числа

Factorial
(BYTE BignumSet, LONG n);
Возвращает в BignumSet факториал n!

 

 

 

 

 

COM BignumArithmeticInteger Fibonacci

dll v4.0

 

Fibonacci

Возвращает в число Фибоначчи для длинного числа

Fibonacci
(BYTE BignumSet, LONG_PTR n);
Возвращает в BignumSet число Фибоначчи n
Fn+1 = Fn + Fn-1

 

 

 

 

 

COM BignumArithmeticInteger LucNum

dll v4.0

 

LucNum

Возвращает число Лукаса для длинного числа

LucNum
(BYTE BignumSet, LONG_PTR n); 
Возвращает в BignumSet число Лукаса n
Ln+1 =Ln + Ln-1

 

 

 

 

 

COM BignumArithmeticInteger FileSet

dll v4.0

 

FileSet
 
Загружает длинное число из файла (*.txt)

FileSet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10);
Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла
Bignum-индекс длинного числа в массиве. 
BignumBase-база числа (от 2 до 62), по умолчанию = 10.

 

 

 

 

 

COM BignumArithmeticInteger FileGet

dll v4.0

 

FileGet

Сохраняет длинное число в файл (*.txt)

FileGet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10);
Сохраняет длинное число в файл (*.txt). 
Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла. 
Bignum-индекс длинного числа в массиве. 
BignumBase-база числа (от 2 до 62), по умолчанию = 10.BignumSet

 

 

 

 

 

COM BignumArithmeticInteger Clear

dll v4.0

 

Clear

Освобождает память занятую длинным числом

Clear
(LONG Bignum=-1);
Освобождает память занятую длинным числом Bignum, или освобождает память занятую всеми числами при заданном параметре по умолчанию = -1.

 

 

 

 

 

COM BignumArithmeticInteger BignumArraySize

dll v4.0

 

BignumArraySize

Возвращает количество чисел Bignum в созданном классе/массиве

LONG Val = BignumArraySize();
Возвращает количество чисел Bignum в созданном классе/массиве.
Начиная с v2.0.0.0 (теперь массив чисел может быть произвольного размера, а не как ранее 256 чисел, размер увеличиваться автоматически.)

 

 

 

 

 

COM BignumArithmeticFloat

 

Класс BignumArithmeticFloat

 

Проект основан на исходниках (С++) библиотеки MPIREdition 3.0.0. (https://github.com/wbhart/mpir)

Реализовано два класса: класс целых чисел с арифметикой (BignumArithmeticInteger) и класс чисел с плавающей точкой (BignumArithmeticFloat).

При создании экземпляра класса создается массив из длинных чисел и арифметикой.

К Bignum числам можно обращаться по индексам в массиве.

 

BignumArithmeticFloat (Bignum) - задается изначально, т.к. дробь может быть бесконечной (по умолчанию принимается минимальный размер).
Размер чисел ничем не ограничен, кроме вашей оперативной памяти.

Обратите внимание, что функции BignumArithmeticFloat (Bignum) основаны на таком же принципе действия, как и IEEE, но не предназначены для плавного расширения для арифметики IEEE P754. В частности, результаты, полученные на одном компьютере, часто отличаются от результатов на компьютере с другим размером машинного слова.

 

 

 

 

 

COM BignumArithmeticFloat Help

dll v4.0

 

Help

HTML Справка (без параметров). Открывает html-страницу с описанием свойств и методов класса.

void Help()

 

 

 

 

 

COM BignumArithmeticFloat SizeBits

dll v4.0

 

SizeBits

Задает и возвращает размер длинного числа.

LONG Val = SizeBits(BYTE Bignum, LONG_PTR* pVal) = .LONG Val;
Задает и возвращает размер длинного числа в БИТАХ LONG Val
Bignum-индекс длинного числа в массиве.

 

 

 

 

 

COM BignumArithmeticFloat Bignum

dll v4.0

 

Bignum

Принимает и возвращает BSTR строку StringBSTR (задает число или возвращает значение).

BSTR* StringOut = Bignum(BYTE Bignum, LONG BignumBase=10, LONG_PTR Precision=0, BSTR Separator=”.”, VARIANT_BOOL eNotationOFF=0) = BSTR* StringIn
Принимает и возвращает BSTR* строку String (задает число или возвращает значение). 
Bignum-индекс длинного числа в массиве. 
BignumBase-база длинного числа (от 2 до 62), по умолчанию = 10. 
Precision – точность (кол-во значимых цифр в числе), по умолчанию = 0 - максимальная (равна заданному размеру в битах). 
Separator – символ разделителя целой и дробной частей числа, по умолчанию точка(“.”). 
eNotationOFF – по умолчанию =0 - экспоненциальная запись (Е-нотация), 1 – дробная по выбранному основанию.
Для Е-нотации с основанием от 2 до 62: в десятичном основании - символ 'e', в других 2 - 9,11 - 62 - символ '@'.
Мантисса выводится в указанном основании, экспонента всегда в десятичном формате.

 

 

 

 

 

COM BignumArithmeticFloat Sign

dll v4.0

 

Sign

Возвращает знак длинного числа

LONG Val = Sign(BYTE Bignum); 
Возвращает знак длинного числа
 LONG Val.
Возвращает
если Bignum > 0, 0 если Bignum = 0, и -1 если Bignum < 0.

 

 

 

 

 

COM BignumArithmeticFloat Compare

dll v4.0

 

Compare

Сравнивает два длинных числа.

LONG Val = Compare(BYTE Bignum1, BYTE Bignum2); 
Возвращает 1 если Bignum1 > Bignum2, 0 если Bignum1 = Bignum2, и -1 если Bignum1 < Bignum2.

 

 

 

 

 

COM BignumArithmeticFloat SizeBitsSet

dll v4.0

 

SizeBitsSet

Метод. Задает размер длинного числа.

SizeBitsSet(BYTE Bignum, LONG_PTR SizeBits);
Задает размер длинного числа в БИТАХ LONG Val.

 

 

 

 

 

COM BignumArithmeticFloat BignumSet

dll v4.0

 

BignumSet

Задает длинное число.

BignumSet(BYTE Bignum, BSTR StringBSTR, LONG BignumBase=10, BSTR Separator=”.”); 
Задает число с параметрами, аналогичными методу Bignum(), см. Bignum().

 

 

 

 

 

COM BignumArithmeticFloat Sum

dll v4.0

 

Sum

Суммирует два длинных числа.

Sum(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2)
BignumSet = Bignum1 + Bignum2

 

 

 

 

 

COM BignumArithmeticFloat SumL

dll v4.0

 

SumL

Суммирует длинное число с обычным.

SumL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 + LONG_PTR(
х64:LONG_PTR= LONGLONGх32:LONG_PTR= LONG)

 

 

 

 

 

COM BignumArithmeticFloat Abs

dll v4.0

 

Abs

Возвращает модуль числа

Abs
(BYTE BignumSet, BYTE Bignum1); 
Возвращает модуль значения из Bignum1 в BignumSet.

 

 

 

 

 

COM BignumArithmeticFloat Subtract

dll v4.0

 

Subtract

Вычитает из одного длинного числа другое

Subtract
(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); 
BignumSet = Bignum1 - Bignum2

 

 

 

 

 

COM BignumArithmeticFloat SubtractL

dll v4.0

 

SubtractL

Вычитает из длинного числа обычное.

SubtractL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 - LONG_PTR.

 

 

 

 

 

COM BignumArithmeticFloat Multiply

dll v4.0

 

Multiply

Умножает одно длинное число на другое. 

Multiply(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); 
BignumSet = Bignum1 * Bignum2.

 

 

 

 

 

COM BignumArithmeticFloat MultiplyL

dll v4.0

 

MultiplyL

Умножает длинное число на обычное. 

MultiplyL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); 
BignumSet = Bignum1 * LONG_PTR.

 

 

 

 

 

COM BignumArithmeticFloat Divide

dll v4.0

 

Divide

Делит одно длинное число на другое

Divide
(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, BYTE Bignum2); 
При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / Bignum2.

 

 

 

 

 

COM BignumArithmeticFloat DivideL

dll v4.0

 

DivideL

Делит длинное число на обычное.

DivideL
(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, LONG_PTR LONG_PTR); 
При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / LONG_PTR.

 

 

 

 

 

COM BignumArithmeticFloat Root

dll v4.0

 

Root

Извлекает квадратный корень длинного числа

Root(BYTE BignumSet, BYTE Bignum1); 
Извлекает квадратный корень из
 Bignum1.
Результат возвращает в
 BignumSet
BignumSet = √ Bignum1.

 

 

 

 

 

COM BignumArithmeticFloat Negate

dll v4.0

 

Negate

Задает значение с противоположным знаком

Negate(BYTE BignumSet, BYTE Bignum1); 
Возвращает значение с противоположным знаком из
 Bignum1 в BignumSet. BignumSet = - Bignum1.

 

 

 

 

 

COM BignumArithmeticFloat Power

dll v4.0

 

Power

Возводит в степень длинное число.

Power
(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR);
Возводит в степень LONG_PTR длинное число Bignum1, результат возвращает в BignumSetBignumSet = Bignum1 ^ LONG_PTR.

 

 

 

 

 

COM BignumArithmeticFloat Clone

dll v4.0

 

Clone

Копирует одно длинное число в другое.

Clone(BYTE BignumSet, BYTE Bignum1); 
Копирует Bignum1 в BignumSet
BignumSet = Bignum1

 

 

 

 

 

COM BignumArithmeticFloat FileSet

dll v4.0

 

FileSet

Загружает длинное число из файла (*.txt)

FileSet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10); 
Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла
Bignum-индекс длинного числа в массиве. 
BignumBase-база числа (от 2 до 62), по умолчанию = 10.

 

 

 

 

 

COM BignumArithmeticFloat FileGet

dll v4.0

 

FileGet

Сохраняет длинное число в файл (*.txt)

FileGet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10, LONG_PTR Precision=0);
Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла
Bignum-индекс длинного числа в массиве. 
BignumBase-база числа (от 2 до 62), по умолчанию = 10. 
Precision – точность (кол-во цифр в числе), по умолчанию = 0 - максимальная (равна заданному размеру в битах).

 

 

 

 

 

COM BignumArithmeticFloat Clear

dll v4.0

 

Clear

Освобождает память занятую длинным числом

Clear
(LONG Bignum=-1);
Освобождает память занятую длинным числом Bignum, или освобождает память занятую всеми числами при заданном параметре по умолчанию = -1.

 

 

 

 

 

COM BignumArithmeticFloat BignumArraySize

dll v4.0

 

BignumArraySize

Возвращает количество чисел Bignum в созданном классе/массиве

LONG Val = BignumArraySize();
Возвращает количество чисел Bignum в созданном классе/массиве.
Начиная с v2.0.0.0 (теперь массив чисел может быть произвольного размера, а не как ранее 256 чисел, размер увеличиваться автоматически.)

 

 

 

 

 

COM BignumArithmeticFloat GetToBignumInt

dll v4.0

 

GetToBignumInt

Преобразовать Bignum из Float в Integer.

BSTR* StringOut = GetToBignumInt(LONG Bignum, LONG BignumBase=10);
ВАЖНО! преобразование происходит с заданной ранее точностью в битах для Float (SizeBitsSet).
Без округлений, отбрасывается дробная часть.
Будьте внимательнее в таких преобразованиях.
Начиная с v2.0.0.0.

 

 

 

 

 

COM VBA

 

Класс VBA

 

Сборник инструментов, не вошедших в другие классы:

 

Инструменты для работы с массивами (сортировка, удаление дубликатов, транспонирование, изменение размерности с сохранением данных, фильтрация и т.д.)

Работа со строками:

+хеширование строки разными алгоритмами SHA (+ новейшие SHA3)

+получить/удалить любые символы Unicode из строки

+удалить из текста лишние пробелы

+поиск вхождения подстроки в строку

+заменить одну подстроку на другую

+поиск строки в одном массиве с выводом данных из второго массива (из соответствующей позиции найденного значению в первом массиве)

 

Генератор QR-кода + конвертации графических форматов из одного в другой

 

Cериализация и шифрование 

 

 

 

 

 

COM VBA ArraySortS

dll v4.0

 

ArraySortS

Быстрая сортировка данных (String) в одномерном/двухмерном массиве

HRESULT ArraySortS([in, out] VARIANT* array_in_out, [in,defaultvalue(0)] VARIANT_BOOL sort_order, [in, defaultvalue(0)] LONG key_1, [in, defaultvalue(0)] LONG key_2, [in, defaultvalue(0)] LONG key_3, [in, defaultvalue(0)]  LONG sort_orientation,  [in, defaultvalue(0)]  VARIANT_BOOL delete_duplicates,[in, defaultvalue(0)]  VARIANT_BOOL out_array_index, [in, out, defaultvalue(0)] VARIANT* index_array_out);

Параметры метода:

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

Получить/удалить любые символы
Unicode из строки. Регистрозависимая.

HRESULT FilterUnicodeChar([in] BSTR StringIn, [in,defaultvalue(L"")] BSTR EnableChar, [in, defaultvalue(L"")] BSTR DisableChar, [out, retval]BSTR* ResultOutRetval);

Параметры метода:

1. StringIn - входящая строка

2. Второй параметр (EnableChar) - символы, включаемые в итоговую строку (через "-" указывается диапазон, сам "-" выводится если его поставить первым символом в шаблоне)

3. Третий параметр (DisableChar) - символы, исключаемые из итоговой строки (через "-" указывается диапазон, сам "-"удаляется если его поставить первым символом в шаблоне).

Последние два параметра - не обязательные. Можно задавать любой из них, можно все два, можно никакой - тогда выводится первоначальная строка

 

 

 

 

 

COM VBA LikeUnicodeChar

dll v4.0

 

LikeUnicodeChar

Сравнивает строку с маской/шаблоном (или наоборот исключая символы шаблона). Регистрозависимая
. (v1.0.5.0 и выше)

HRESULT LikeUnicodeChar([in] BSTR stringIn, [in] BSTR maskChar, [in, defaultvalue(0)] VARIANT_BOOL invertMask, [out, retval] VARIANT_BOOL* resultRetval);

Параметры метода:

1.stringIn - входящая строка

2.maskChar - маска/шаблон (через "-" указывается диапазон, сам "-" выводится/удаляется если его поставить первым символом в шаблоне)

3.invertMask - инвертировать маску (сравнение, исключая символы маски)

Возвращает булево.

 

 

 

 

 

COM VBA Trim

dll v4.0

 

Trim

Удаляет из текста все пробелы, за исключением одиночных пробелов между словами.

HRESULT Trim([in] BSTR StringIn, [out, retval] BSTR* StringOutRetval);

Параметры метода:

1.StringIn - входящая строка

 

 

 

 

 

COM VBA InStr

dll v4.0

 

InStr

Ищет первое вхождение подстроки в строку. Регистрозависимая
.

HRESULT InStr([in] BSTR StringIn, [in] BSTR StringFindin, [defaultvalue(1)] LONG Start, [out, retval] LONG* pValRetval);

Параметры метода:

1.StringIn - строка в которой производим поиск

2.StringFind - подстрока для поиска в StringIn

3.Start - позиция с которой начинаем поиск в строке

 

 

 

 

 

COM VBA Replace

dll v4.0

 

Replace

Заменяет одну подстроку на другую. Параметр Start - не усекает строку, в отличии от стандартной Replace() в
VBA. Регистрозависимая.


HRESULT Replace([in] BSTR StringIn, [in] BSTR StringFind, [in] BSTR StringReplace, [in, defaultvalue(1)] LONG Start, [in, defaultvalue(0x7fffffff)] LONG Count, [out, retval] BSTR* StringOutRetval);

Параметры метода:

1.StringIn - строка в которой производим поиск

2.StringFind - подстрока для поиска и замены в StringIn

3.StringReplace - подстрока на которую заменяем StringFind

3.Start - позиция с которой начинаем поиск и замены подстрок в строке

4.Count - количество замен

 

 

 

 

 

COM VBA ArraySortV

dll v4.0

 

ArraySortV

Быстрая сортировка данных (
Variant) в одномерном/двухмерном массиве.

Использованы параллельные алгоритмы сортировки. (библиотеки PPL от Мicrosoft)

HRESULT ArraySortV([in, out] VARIANT* array_in_out, [in, defaultvalue(1)] LONG key_1, [in, defaultvalue(0)] VARIANT_BOOL sort_order1, [in, defaultvalue(0)] LONG key_2, [in, defaultvalue(0)] VARIANT_BOOL sort_order2, [in, defaultvalue(0)] LONG key_3, [in, defaultvalue(0)] VARIANT_BOOL sort_order3, [in, defaultvalue(L"")] BSTR key_and_sort_order_next, [in, defaultvalue(0)] LONG optionCompare);

Параметры метода:

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 

 

 

 

 

 

COM VBA Transpose

dll v4.0

 

Transpose

быстрое транспонирование (на месте) двухмерного массива (поддерживаются все типы данных).

HRESULT Transpose([in, out] VARIANT* array_in_out);

Параметры метода:

1.array_in_out - указатель на массив (ввод/вывод)

 

 

 

 

 

COM VBA QRcodePrint

dll v4.0

 

QRcodePrint

Печать QR-кода в Excel, Word, 1С и проч. приложениях с поддержкой COM/ActiveX (см.
https://bedvit.ru/com/qr/)

 

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) для конвертации вышеперечисленных форматов из одного в другой, для случаев конвертации сторонних изображений.

 

Пример использования:
1. Excel
 - открываем или устанавливаем xll как надстройку нужной разрядности (Excel), пишем код:

 

Visual Basic

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

Конвертации форматов bmp, jpeg, gif, tiff, png из одного в другой.

HRESULT ConvertFormatImage([in] BSTR FileIn, [in] BSTR FileOut, [in] BYTE FormatImageOut);

Параметры/Аргументы метода ConvertFormatImage :

1. FileIn - полное имя файла (обязательное).

2. FileOut - полное имя файла (обязательное).

3. FormatImageOut - нужный формат (обязательное). Код в функции/формат:0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)

 

 

 

 

 

COM VBA GetRowsCountCSVansi

dll v4.0

 

GetRowsCountCSVansi

Возвращает кол-во строк в файле CSV.


HRESULT GetRowsCountCSVansi([in] BSTR FileIn, [in, defaultvalue(0)] LONG FileFlagNoBuffering, [out, retval] LONG* RowsCountOutRetval);

Beta-версия функции, тестирование и описание Подробнее на форуме.

 

 

 

 

 

COM VBA GetRowCSVansi

dll v4.0

 

GetRowCSVansi

возвращает найденную строку в файле CSV по индексу.

HRESULT GetRowCSVansi([in] BSTR FileIn, [in]  LONG IndexString, [in, defaultvalue(0)] LONG FileFlagNoBuffering, [out, retval] BSTR* StringOutRetval);

Beta-версия функции, тестирование и описание Подробнее на форуме.

 

 

 

 

 

COM VBA FindRowsInCSVansi

dll v4.0

 

FindRowsInCSVansi

Возвращает найденную строку/строки в файле CSV по искомой подстроке.

HRESULT FindRowsInCSVansi([in] BSTR FileIn, [in] BSTR FindString, [in, defaultvalue(0)]  LONG MultiLine, [in, defaultvalue(0)] LONG FileFlagNoBuffering, [out, retval] BSTR* StringOutRetval);

Beta-версия функции, тестирование и описание Подробнее на форуме.

 

 

 

 

 

COM VBA SortDeleteDuplicateRowsCSVansi

dll v4.0

 

SortDeleteDuplicateRowsCSVansi

Сортировка и удаление дубликатов строк в csv/txt(ANSI) файлах.

HRESULT SortDeleteDuplicateRowsCSVansi([in] BSTR FileIn, [in] BSTR FileOut, [in, defaultvalue(0)]  LONG HeaderRowsCount, [in, defaultvalue(0)] LONG OnlySort, [in, defaultvalue(0)] LONG SortOrder, [in, defaultvalue(0)] LONG FileFlagNoBuffering, [in, defaultvalue(0)] LONG SetLocale, [in, defaultvalue(L"")] BSTR Locale, [out, retval] LONGLONG* RowsCountOutRetval);

Beta-версия функции, тестирование и описание Подробнее на форуме.

 

 

 

 

 

COM VBA SHAstrUTF8

dll v4.0

 

SHAstrUTF8

Хеширование строки алгоритмами
SHA (см. https://bedvit.ru/com/sha/)

Использованы исходники Crypto++

HRESULT SHAstrUTF8([in] BSTR stringIn, [in] LONG versionSHA, [in, defaultvalue(0)] VARIANT_BOOL charLower, [out, retval] BSTR* stringOutRetval);

Параметры функции:

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

 

 

 

 

 

COM VBA MDstrUTF8

dll v4.0

 

MDstrUTF8

Хеширование строки алгоритмами
MD (см. https://bedvit.ru/com/sha/)

Использованы исходники Crypto++

HRESULT MDstrUTF8([in] BSTR stringIn, [in] LONG versionMD, [in, defaultvalue(0)] VARIANT_BOOL charLower, [out, retval] BSTR* stringOutRetval);

Параметры функции:

1.StringIn - входящая строка

2.versionMD- версия алгоритма MD

3.charLower - вывод результата в нижнем регистре (опционально, по умолчанию FALSE)

 

Поддержка следующих алгоритмов:

versionMD = 5,        MD5

 

 

 

 

 

COM VBA AESstrUTF8

dll v4.0

 

AESstrUTF8

Шифрование данных алгоритмами AES

Использованы исходники Crypto++

HRESULT AESstrUTF8([in] BSTR stringIn, [in] BSTR key, [in, defaultvalue(0)] VARIANT_BOOL decrypt, [in, defaultvalue(L"0")] VARIANT mode, [in, defaultvalue(L"")] BSTR initializationVectorIV, [in, defaultvalue(0) ]VARIANT_BOOL strFormatHex, [in, defaultvalue(0)]VARIANT_BOOL secureZeroMemoryKey, [out, retval] BSTR* stringOutRetval);

Параметры функции:

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 соответственно)
AESstrUTF8() - изменились индексы алгоритмов шифрования, теперь у всех функций по шифрованию 
одинаковые индексы для алгоритмов AES

 

Алгоритмы шифрования 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

Быстрое преобразования двухмерного массива в одномерный (данные не обрезаются, 2е измерение преобразуются в очередь - складывается "столбцами")
HRESULT
Array2Dto1D([in, out] VARIANT* array_in_out, [in, defaultvalue(0)] LONG lLbound);

Параметры метода:

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

Быстрое преобразование одномерного массива в двухмерный (данные не удаляются) (v1.0.5.0 и выше)

Начиная с v2.0.0.2 можно задавать размер первой размерности, вторая рассчитывается автоматически, в зависимости от общего количества элементов. Размер для размерности должен задаваться так, чтобы общее количество элементов массива было кратно задаваемому размеру. Порядок данных сохраняется первоначальный.

HRESULT Array1Dto2D([in, out] VARIANT* array_in_out, [in, defaultvalue(0)] LONG lLboundCol, [defaultvalue(0)] LONG lLboundRow, [defaultvalue(1)] LONG cElementsCol);

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) (см. https://bedvit.ru/com/arrayfilterv/)

Инструмент для фильтрации одномерного и двухмерного СОМ-массива (тип данных VARIANT) для любого количества столбцов, с любым количеством условий.

Реализован параллельный алгоритм фильтрации (поддержка любого количества логических процессоров).

HRESULT ArrayFilterV([in] VARIANT* array_in, [in] VARIANT* array_parameters, [in] VARIANT_BOOL array_index_on, [in, out] VARIANT* array_out);

1. array_in - массив входящий (одномерный, двухмерный), тип данных VARIANT.

2. array_parameters - массив задаваемых параметров, тип данных VARIANT (6 параметров для одного условия, можно для одного и того же столбца, можно для разных). Количество условий не ограничено. Условия можно создать из списка, можно создать двухмерный массив и заполнить, можно забрать сразу с листа Excel.

3. array_out_index - режим вывода: 0- отфильтрованный массив, 1-массив индексов

4. array_out - массив результатов

 

Условия в массиве параметров применяются в порядке следования, если нет скобок или внутри скобок. Скобки задают приоритет выполнения условий (стандартно), потом "И" и "ИЛИ" в порядке очередности.
Параметры массива условий (сделал максимально близко к стандартной записи условий) - 6 параметров для каждой строки условия:
1.Логические операторы (0-ИЛИ, 1-И). Для первого условия можно не указывать.

2.Скобки открывающие (если нужны, можно несколько)
3.Столбец для фильтрации
4.Операторы сравнения (для сравнения значения заданного столбца со значением фильтра):
1 - меньше (для числа),
2 - равно (для числа и строки),
4 - больше (для числа),
8 - содержит подстроку (для строки),
16 - зарезервированное значение (регулярки),
32 - игнорировать регистр (для строки) ,
64 - зарезервированное значение (basic),
128 - зарезервированное значение (extended),
256 - LIKE (пока только знак подстановки "*")(для строки) (начиная с v3.5, в XLL c v4.6) полноценный Like (бинарный режим)
512-НЕ (для числа и строки)

Реализовано в виде бинарной маски, т.е. можно складывать, к примеру 8+512 - НЕ содержит подстроку, 1+2 - меньше или равно и т.д.
5.Значение фильтра (для фильтрации)
6.Скобки закрывающие (если нужны, можно несколько)

т.е. для каждого условия 6 параметров: И/ИЛИ,(((...,столбец, оператор сравнения, значение, ...)))

Условия можно задавать как простые:
'фильтр по первому столбцу, значение = 9
Array(,,1, 2, 9, "")

так и более сложные, к примеру (см. ниже.)

(((c1 like "маша" or like "вася") and c1<>"маша иванова") or (c2<>"1" or c2=1)) and (c3>=12,5 and c3<=55,8)

Логические операторы

Скобка, открывающая

Столбец для фильтрации

Операторы сравнения

Значение для фильтра

Скобка, закрывающая

0(ИЛИ)*

(((

1

8(Содержит)*

"маша"

 

0(ИЛИ)*

 

1

8(Содержит)*

"вася"

)

1(И)*

 

1

512+2(<>)*

"маша иванова"

)

0(ИЛИ)*

(

2

512+2(<>)*

"1"

 

0(ИЛИ)*

 

2

2(=)*

1

))

1(И)*

(

3

4+2(>=)*

12,5

 

1(И)*

 

3

1+2(<=)*

55,8

)

*(расшифровка передаваемого числового значения)

 

Array(,"(((", 1, Содержит, "маша", , ИЛИ, , 1, Содержит, "вася", ")", И, , 1, НеРавно, "маша иванова", ")", ИЛИ, "(", 2, НеРавно, "'1", , ИЛИ, , 2, Равно, 1, "))", И, "(", 3, БольшеРавно, 12.5, , И, , 3, МеньшеРавно, 55.8, ")")
или в таком виде (как удобнее). В примере для операторов сравнения созданы псевдонимы (в виде слова, по факту это бинарная маска, см. выше)
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

Преобразовать все символы строки в нижний регистр (в массиве).

HRESULT ArrayCharLowerV([in, out] VARIANT* array_in_out);

Параметры функции:

1.array_in_out – массив строк, который нужно преобразовать (на месте)

 

 

 

 

 

COM VBA ArrayCharUpperV

dll v4.0

 

ArrayCharUpperV

Преобразовать все символы строки в ВЕРХНИЙ регистр (в массиве).

HRESULT ArrayCharUpperV([in, out] VARIANT* array_in_out);

Параметры функции:

1.array_in_out - массив, который нужно преобразовать (на месте)

 

 

 

 

 

COM VBA ArrayCharToNumV

dll v4.0

 

ArrayCharToNumV

Преобразовать все данные в тип:
Double (числа сохраненные как текст)  (в массиве).

HRESULT ArrayCharToNumV([in, out] VARIANT* array_in_out);

Параметры функции:

1.array_in_out - массив, который нужно преобразовать (на месте)

 

 

 

 

 

COM VBA ArrayNumToCharV

dll v4.0

 

ArrayNumToCharV

Преобразовать все данные в тип: String (в массиве).

HRESULT ArrayNumToCharV([in, out] VARIANT* array_in_out);

Параметры функции:

1.array_in_out - массив, который нужно преобразовать (на месте)

 

 

 

 

 

COM VBA Version

dll v4.0

 

Version

Версия библиотеки BedvitCOM.dll

HRESULT Version([out, retval] VARIANT* versionDLLRetval);

 

 

 

 

 

COM VBA FileName

dll v4.0

 

FileName

Полный путь к зарегистрированной библиотеки BedvitCOM.dll

HRESULT FileName([out, retval] VARIANT* fileNameDLLRetval);

 

 

 

 

 

COM VBA VariantCopy

dll v4.0

 

VariantCopy

Глубокая копия VARIANT.

HRESULT VariantCopy([in] VARIANT* variantIn, [out, retval] VARIANT* variantCopyRetval);

Параметры функции:

1.       variantIn – исходный VARIANT, с которого делается копия

 

 

 

 

 

COM VBA ArrayDtoD

dll v4.0

 

ArrayDtoD

Быстрое преобразование одномерного массива в двухмерный (данные не удаляются и не добавляются).

Можно задавать размер второй размерности, первая рассчитывается автоматически, в зависимости от общего количества элементов. Размер для размерности должен задаваться так, чтобы общее количество элементов массива было кратно задаваемому размеру. Порядок данных сохраняется первоначальный.

HRESULT ArrayDtoD([in, out] VARIANT* arrayInOut, [in, defaultvalue(0)]LONG lLboundRow, [in, defaultvalue(0)]LONG cElementsRow, [in, defaultvalue(0)]LONG lLboundCol, [in, defaultvalue(0)]LONG cElementsCol, [in, defaultvalue(0)]LONG lLbound3, [in, defaultvalue(0)]LONG cElements3, [in, defaultvalue(0)]LONG lLbound4, [in, defaultvalue(0)]LONG cElements4, [in, defaultvalue(0)]LONG lLbound5, [in, defaultvalue(0)]LONG cElements5, [in, defaultvalue(0)]LONG lLbound6, [in, defaultvalue(0)]LONG cElements6, [in, defaultvalue(0)]LONG lLbound7, [in, defaultvalue(0)]LONG cElements7, [in, defaultvalue(0)]LONG lLbound8, [in, defaultvalue(0)]LONG cElements8, [in, defaultvalue(0)]LONG lLbound9, [in, defaultvalue(0)]LONG cElements9, [in, defaultvalue(0)]LONG lLbound10, [in, defaultvalue(0)]LONG cElements10);

Параметры функции:

1. arrayInOut – массив для преобразования «на месте»

2. lLboundRow – нижняя граница для строк

3. cElementsRow – количество строк

4. lLboundCol – нижняя граница для столбцов

5. cElementsCol – количество столбцов

4. lLbound3 – нижняя граница для третьего измерения

5. cElements3 – количество элементов третьего измерения

 

 

 

 

 

COM VBA ArrayReDim

dll v4.0

 

ArrayReDim

Изменение размерности и количество элементов в размерностях СОМ-массива. Можно обрезать/добавлять элементы, как в начало, так и в конец любой размерности массива.

 

Информация сохраняется, если не обрезается принудительно. Для созданный блоков массива задаются значения Empty.

HRESULT ArrayReDim([in, out] VARIANT* arrayInOut, [in, defaultvalue(0)]LONG lLboundRow, [in, defaultvalue(0)]LONG rowStartChange, [in, defaultvalue(0)]LONG rowEndChange, [in, defaultvalue(0)]LONG lLboundCol, [in, defaultvalue(0)]LONG colStartChange, [in, defaultvalue(0)]LONG colEndChange);

1.arrayInOut - массив (Variant)

2.lLboundRow - новая нижняя граница для строк

3.rowStartChange - изменения для начала измерения строк ("-"обрезаем, "+"добавляем новые строки)

4.rowEndChange - изменения для конца измерения строк ("-"обрезаем, "+"добавляем новые строки)

5.lLboundCol - новая нижняя граница для столбцов

6.colStartChange - изменения для начала измерения столбцов ("-"обрезаем, "+"добавляем новые столбцы)

7.colEndChange - изменения для конца измерения столбцов ("-"обрезаем, "+"добавляем новые столбцы)

 

 

 

 

 

COM VBA ArraySize

dll v4.0

 

ArraySize

Размер СОМ – массива. Количество элементов в сумме по всем измерениям.

HRESULT ArraySize([in] VARIANT* arrayIn, [out, retval] VARIANT* arraySizeRetval);

Параметры функции:

1. arrayIn – массив, для которого нужно получить количество всех элементов.

 

 

 

 

 

COM VBA SplitS

dll v4.0

 

SplitS

Возвращает одномерный массив подстрок из указанной строки, разделенной по указанному разделителю
(входящая строка BSTR)

HRESULT SplitS([in] BSTR stringIn, [in] BSTR delimiter, [in, defaultvalue(0)] LONG setLowerBound, [in, defaultvalue(0)] LONG multiThreading, [out, retval] VARIANT* arrayOutRetval);

Параметры функции:

1. stringIn – строка для деления на подстроки

2. delimiter – разделитель, по которому нужно разделить строку

3. setLowerBound – нижняя граница для создаваемого массива

4. multiThreading  - включение многопоточных вычислений

 

 

 

 

 

COM VBA SplitV

dll v4.0

 

SplitV

Возвращает одномерный массив подстрок из указанной строки, разделенной по указанному разделителю
(входящий VARIANT)

HRESULT SplitV([in] VARIANT stringIn, [in] VARIANT delimiter, [in, defaultvalue(0)] LONG setLowerBound, [in, defaultvalue(0)] VARIANT_BOOL multiThreading, [out, retval] VARIANT* arrayOutRetval);

Параметры функции:

1. stringIn VARIANT содержащий строку для деления на подстроки

2. delimiter – разделитель, по которому нужно разделить строку

3. setLowerBound – нижняя граница для создаваемого массива

4. multiThreading  - включение многопоточных вычислений

 

 

 

 

 

COM VBA ArrayCopyStoV

dll v4.0

 

ArrayCopyStoV

Копирование СОМ-массива с типом данных
BSTR(строка) в СОМ-массив с типом данных VARIANT.

HRESULT ArrayCopyStoV([in] VARIANT* arrayIn, [in] LONG multiThreading, [in, out, defaultvalue(0)]  VARIANT* arrayOut, [out, retval] VARIANT* arrayOutRetval);

Параметры функции:

1. arrayIn – входящий массив

2. multiThreading - включение многопоточных вычислений

3. arrayOut – получаемый массив

 

 

 

 

 

COM VBA ArrayConvertStoV

dll v4.0

 

ArrayConvertStoV

Преобразование «на месте» СОМ-массива с типом данных
BSTR(строка) в СОМ-массив с типом данных VARIANT.

HRESULT ArrayConvertStoV([in, out] VARIANT* arrayInOut, [in, defaultvalue(0)] LONG multiThreading);

Параметры функции:

1. arrayInOut – массив меняемый «на месте»

2. multiThreading - включение многопоточных вычислений

 

 

 

 

 

COM VBA ArrayConvertVtoS

dll v4.0

 

ArrayConvertVtoS

Преобразование «на месте» СОМ-массива с типом данных
VARIANT в СОМ-массив с типом данных BSTR(строка).

 
HRESULT ArrayConvertVtoS([in, out] VARIANT* arrayInOut, [in, defaultvalue(0)] LONG multiThreading);

Параметры функции:

1. arrayInOut – массив меняемый «на месте»

2. multiThreading - включение многопоточных вычислений

 

 

 

 

 

COM VBA Like

dll v4.0

 

Like

Используется для сравнения двух строк.

HRESULT Like([in] BSTR stringIn, [in] BSTR patternIn, [out, retval] VARIANT_BOOL* resultRetval);

Параметры функции:
1. string - входящая строка
2. pattern - шаблон, маска для сравнения со строкой

Аналог оператора LIKE от Microsoft (https://learn.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/like-operator)
с таким же набором правил составления маски и с таким же возвращаемым результатом

Предоставляет универсальное средство для сравнения строк. Возможности сопоставления шаблона позволяют использовать подстановочные знаки, списки знаков или диапазоны знаков в любой комбинации, чтобы сопоставить строки. В следующей таблице представлены знаки, разрешенные для использования в аргументе pattern, и объясняется, чему они соответствуют:
Знаки в pattern - Сопоставление в string
? - Любой отдельный знак.
* - Ноль или больше знаков.
# - Любая однозначная цифра (0–9).
[ charlist ] - Любой отдельный знак, представленный в charlist.
[ !charlist ] - Любой отдельный знак, не представленный в charlist.

Группа из одного или нескольких символов ( charlist ), заключенная в квадратные скобки ([ ]), может использоваться для сопоставления с любым одним символом в строке и может включать практически любой код символов, включая цифры.

Примечание:

Чтобы получить сопоставление для специальных знаков, а именно для левой квадратной скобки ([), вопросительного знака (?), знака номера (#) и звездочки (*), заключите их в квадратные скобки. Знак правой квадратной скобки (]) не может использоваться в рамках группы для сопоставления самому себе, однако может использоваться за пределами группы как отдельный знак.

С помощью дефиса (-), разделяющего нижнюю и верхнюю границы диапазона, charlist может использоваться для определения диапазона знаков. Например, приводит к совпадению, [A-Z] если соответствующая позиция символов в строке содержит прописные буквы в диапазоне от A до Z. Несколько диапазонов могут включаться в квадратные скобки без использования каких-либо разделителей.

Также имеются другие важные правила для сопоставления шаблона:

Восклицательный знак (!) в начале charlist означает, что выполняется сопоставление, если любой знак, кроме знаков, указанных в charlist, будет найден в аргументе string. При использовании вне квадратных скобок восклицательный знак сопоставляется самому себе.
Дефис (-) может отображаться в начале (но после восклицательного знака, если он используется) или в конце charlist для сопоставления самому себе. На любой другой позиции дефис используется для указания диапазона знаков.
При задании диапазона знаков они должны отображаться по возрастающему порядку сортировки (от наименьшего к наибольшему). [A-Z] является допустимым шаблоном, но [Z-A] не является.
Последовательность [] символов считается строкой нулевой длины ("").

 

Возвращает TRUE or FALSE в зависимости от итога сравнения строки с шаблоном.

 

 

 

 

 

COM VBA RegexMatchECMAScript

dll v4.0

 

RegexMatchECMAScript

Поиск подстроки в строке с помощью регулярных выражений, грамматика ECMAScript.

HRESULT RegexMatchECMAScript([in] BSTR stringIn, [in] BSTR patternIn, [out, retval] VARIANT_BOOL* resultRetval);

Параметры функции:

1.stringIn – строка в которой ищем

2. patternIn – шаблон

 

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

 

 

 

 

 

COM VBA UnicodeCharCodeGet

dll v4.0

 

UnicodeCharCodeGet

Возвращает юникод указанного символа в строке.

HRESULT UnicodeCharCodeGet([in] BSTR stringIn, [in] LONG position, [out, retval] SHORT* unicodeCharRetval);

Параметры функции:

1.stringIn – строка в которой смотрим символ

2.position – позиция символа в строке (отсчет с 1)

 

 

 

 

 

COM VBA UnicodeCharCodeSet

dll v4.0

 

UnicodeCharCodeSet

Меняет указанный символ в строке на указанный юникод

HRESULT UnicodeCharCodeSet([in] BSTR stringIn, [in] LONG position, [in] SHORT unicodeChar);//
строки с 1, массивы с 0

Параметры функции:

1.stringIn – строка в которой меняем символ

2.position – позиция символа в строке (отсчет с 1)

 

 

 

 

 

COM VBA CoCreateGuid

dll v4.0

 

CoCreateGuid

создает
GUID — уникальное 128-битное целое число.

HRESULT CoCreateGuid([in, defaultvalue(0)]LONG liteMode, [out, retval] VARIANT* GUIDstringOutRetval);

Параметры функции:

1. liteMode – режим вывода, стандартный = 0 и упрощенный =1, ("{E06AD101-5907-474B-8506-A7CD0149537F}" и "c883f002273a4c63ae52f91c787ba1e9" соответственно).

 

 

 

 

 

COM VBA VariantSerialization

dll v5.0

 

VariantSerialization

Cериализация и десериализация типа данных Variant, используемый в COM, VB, VBA, C++, Python и других поддерживающих СОМ языков (см.
https://bedvit.ru/com/serialization/)

Поддерживаются базовые типы и массивы. Объекты не сериализуются.

В некоторой степени - аналог CComVariant::ReadFromStream и CComVariant::WriteToStream

HRESULT VariantSerialization([in] VARIANT variantIn, [out, retval] VARIANT* byteArrayOutRetval);

Параметры функции:

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

Cериализация и десериализация типа данных Variant, используемый в COM, VB, VBA, C++, Python и других поддерживающих СОМ языков (см.
https://bedvit.ru/com/serialization/)

Поддерживаются базовые типы и массивы. Объекты не сериализуются.

В некоторой степени - аналог CComVariant::ReadFromStream и CComVariant::WriteToStream

HRESULT VariantDeserialization([in] VARIANT byteArrayIn, [out, retval] VARIANT* variantOutRetval);

Параметры функции:

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

Шифрование данных алгоритмами AES (зашифровать) (см. https://bedvit.ru/com/crypto/)

Использованы исходники Crypto++

HRESULT VariantAES256Encrypt([in] VARIANT variantIn, [in]BSTR password, [in, defaultvalue(0)]VARIANT_BOOL secureZeroMemoryPassword, [in, defaultvalue(L"")]BSTR salt, [in, defaultvalue(3)]LONG algorithmCrypto, [out, retval]VARIANT* byteArrayOutRetval); 

Параметры функции:

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

Шифрование данных алгоритмами AES (расшифровать) (см. https://bedvit.ru/com/crypto/)

Использованы исходники Crypto++

HRESULT VariantAES256Decrypt([in] VARIANT byteArrayIn, [in]BSTR password, [in, defaultvalue(0)]VARIANT_BOOL secureZeroMemoryPassword, [in, defaultvalue(L"")]BSTR salt, [in, defaultvalue(3)]LONG algorithmCrypto, [out, retval]VARIANT* variantOutRetval);

Параметры функции:

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

Преобразования данных в формат выгрузки на лист Excel (для текста проставляется апостроф(') первым символом)

HRESULT ValueFormatExcelSheet([in] VARIANT valueIn, [out, retval]VARIANT* valueOutRetval);

Параметры функции:

1. valueIn – входящие данные, отдельное значение или массив

2.valueOutRetval – исходящие данные в формате выгрузки на лист Excel (для текста проставляется апостроф (') первым символом).

 

 

 

 

 

COM UnorderedMap

Класс UnorderedMap

BedvitCOM.UnorderedMap

Реализация в COM ассоциативного контейнера, содержащего пары ключ-значение с уникальными ключами. Поиск, вставка и удаление элементов имеют среднюю постоянную сложность.
Часть библиотеки BedvitCOM (начиная с v1.0.4.7, в XLL c v2.0.1.5).

Использован стандартный контейнер С++: std::unordered_map (хеш-таблица)

 

КЛЮЧ: можно использовать любые данные (не включая ссылки на массивы и объекты), ключ хранится как строка (конвертируется, если нужно, из другого типа данных).

ЗНАЧЕНИЕ: можно использовать любые данные (включая ссылки на массивы, объекты и даже на другую хеш-таблицу)

(см. https://bedvit.ru/com/unorderedmap/)

 

 

 

 

 

COM UnorderedMap Find

dll v4.0

 

Find

Поиск значения по ключу, возвращает true, если найден. Если
value задан - возвращает значение (опционально) (см. https://bedvit.ru/com/unorderedmap/)

HRESULT Find([in] VARIANT key, [in, out, optional] VARIANT* value, [out, retval] VARIANT_BOOL* resultRetval);

 

 

 

 

 

COM UnorderedMap Insert

dll v4.0

 

Insert

Вставляет пару ключ-значения по ключу, возвращает true, если успешно, false - если ключ уже есть (не перезаписывается) (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT Insert([in] VARIANT key, [in] VARIANT value, [out, retval] VARIANT_BOOL* resultRetval);

 

 

 

 

 

COM UnorderedMap InsertOrAssign

dll v4.0

 

InsertOrAssign

Вставляет или перезаписывает пару ключ-значения по ключу, возвращает true, если создан новый и false если обновлен уже существующий (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT InsertOrAssign([in] VARIANT key, [in] VARIANT value, [out, retval] VARIANT_BOOL* resultRetval);

 

 

 

 

 

COM UnorderedMap Erase

dll v4.0

 

Erase

Удаляет пару ключ-значения по ключу, возвращает true, если успешно (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT Erase([in] VARIANT key, [out, retval] VARIANT_BOOL* resultRetval);

 

 

 

 

 

COM UnorderedMap Clear

dll v4.0

 

Clear

Очистить весь контейнер (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT Clear();

 

 

 

 

 

COM UnorderedMap Size

dll v4.0

 

Size

Возвращает размер контейнера (количество пар ключ-значение) (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT Size([out, retval] LONG* resultRetval);

 

 

 

 

 

COM UnorderedMap RangeSet

dll v4.0

 

RangeSet

Вставляет пары ключ-значения из массива/диапазона, возвращает количество вставленных пар ключ-значение. Из дубликатов - загружается только первый по порядку (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT RangeSet([in] VARIANT range, [out, retval] LONG* resultRetval);

 

 

 

 

 

COM UnorderedMap RangeGet

dll v4.0

 

RangeGet

Возвращает количество выгруженных элементов в массив с указанной нижней границей массива (по умолчанию
= 0) (см. https://bedvit.ru/com/unorderedmap/)

HRESULT RangeGet([out] VARIANT* range, [in, defaultvalue(0)] LONG lowerBound, [out, retval] LONG* resultRetval);

 

 

 

 

 

COM UnorderedMap SetArray1D

dll v4.0

 

SetArray1D

Вставляет пары ключ-значения из одномерного массива по порядку (ключи, потом значения), возвращает количество вставленных пар ключ-значение. Из дубликатов - загружается только первый по порядку (см.
https://bedvit.ru/com/unorderedmap/)

HRESULT SetArray1D([in] VARIANT range, [out, retval] LONG* resultRetval);

 

 

 

 

 

COM UnorderedMap GetArray1D

dll v4.0

 

GetArray1D

Возвращает количество выгруженных элементов в одномерный массив по порядку (ключи, потом значения), с указанной нижней границей массива (по умолчанию = 0) (см. https://bedvit.ru/com/unorderedmap/)

HRESULT GetArray1D([out] VARIANT* range, [in, defaultvalue(0)] LONG lowerBound, [out, retval] LONG* resultRetval);

 

 

 

 

 

 

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