BedvitCOM (библиотека COM/ActiveX) + BedvitXLL (библиотека XLL c C API Functions для Excel) С/С++
Запись от bedvit размещена 06.08.2019 в 18:48
Показов 44445
Комментарии 20
Решил объединить все проекты по данной тематике в одно решение. Скачать новые версии библиотек XLL и COM на сайте. Более подробно по компонентам - в отдельных темах (будут линки). 1.BedvitCOM (библиотека COM/ActiveX) Область применения - COM/ActiveX поддерживающие приложения/языки на Windows (х32, х64). Реализованы dual-интерфейсы с Automation-совместимыми типами данных (поддержка раннего и позднего связывания). При раннем связывании есть описание функционала и параметров. Регистрация COM реализовано как под админом, так и под пользователем (актуально в офисной части клиентов) Регистрация стандартная: Админ: Regsvr32 "FullName.DLL" !ПОМНИМ! В Win10 регистрация под правами админа: "правая кнопка" - "Пуск" -"Командная строка (администратор)" Пользователь: Regsvr32 /i /n "FullName.DLL" Удалить из реестра: Regsvr32 /u "FullName.DLL" Примеры использования: Кликните здесь для просмотра всего текста
Раннее связывание
Содержит: 1. Класс BignumArithmeticInteger - длинная арифметика с целыми числами. Кликните здесь для просмотра всего текста
Свойства и Методы BignumArithmeticInteger
1.Help(); HTML Справка (без параметров). 2.BSTR* StringBSTR = Bignum(BYTE Bignum, LONG BignumBase=10) = BSTR* StringBSTR ; Свойство. Принимает и возвращает BSTR* строку StringBSTR (задает число или возвращает значение). Bignum-индекс длинного числа в массиве (0-255). BignumBase-база длинного числа (от 2 до 36), по умолчанию = 10. 3.LONG Val = Sign(BYTE Bignum); Свойство. Возвращает знак длинного числа LONG Val.Возвращает 1 если Bignum > 0, 0 если Bignum = 0, и -1 если Bignum < 0. 4.LONG Val = Even(BYTE Bignum); Свойство. Определяет, является ли Bignum четное или нечетное. Возвращает 1 - Bignum четное, 0 - Bignum нечетное. 5.LONG Val = Compare(BYTE Bignum1, BYTE Bignum2); Метод. Сравнивает два длинных числа. Возвращает 1 если Bignum1 > Bignum2, 0 если Bignum1 = Bignum2, и -1 если Bignum1 < Bignum2. 6.BignumSet(BYTE Bignum, BSTR StringBSTR, LONG BignumBase=10); Метод. Задает число с параметрами аналогичными свойству Bignum() 7.Sum(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Суммирует два длинных числа. BignumSet = Bignum1 + Bignum2 8.SumL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Суммирует длинное число с обычным. BignumSet = Bignum1 + LONG_PTR(х64:LONG_PTR= LONGLONG, х32:LONG_PTR= LONG) 9.Abs(BYTE BignumSet, BYTE Bignum1); Метод. Возвращает модуль значения из Bignum1 в BignumSet. 10.Negate(BYTE BignumSet, BYTE Bignum1); Метод. Возвращает значение с противоположным знаком из Bignum1 в BignumSet. BignumSet = - Bignum1. 11.Subtract(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Вычитает из одного длинного числа второе. BignumSet = Bignum1 - Bignum2 12.SubtractL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Вычитает из длинного числа обычное. BignumSet = Bignum1 - LONG_PTR. 13.Multiply(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Умножает одно длинное число на второе. BignumSet = Bignum1 * Bignum2. 14.MultiplyL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Умножает длинное число на обычное. BignumSet = Bignum1 * LONG_PTR. 15.Divide(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, BYTE Bignum2); Метод. Делит одно длинное число на второе. При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / Bignum2. 16.DivideL(BYTE BignumQuotient, BYTE BignumRemainder, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Делит длинное число на обычное. При делении получаем частное в BignumQuotient, остаток от деления в BignumRemainder = Bignum1 / LONG_PTR. 17.Power(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Возводит в степень LONG_PTR длинное число Bignum1, результат возвращает в BignumSet. BignumSet = Bignum1 ^ LONG_PTR. 18.Clone(BYTE BignumSet, BYTE Bignum1); Метод. Копирует Bignum1 в BignumSet. BignumSet = Bignum1 19.RootRem(BYTE BignumRoot, BYTE BignumRemainder, BYTE Bignum1, LONG_PTR n_root); Метод. Извлекает корень n_root-степени из Bignum1. Целочисленный результат возвращает в BignumRoot, остаток в BignumRemainder = (n-th root)√ Bignum1. 20.Factorial(BYTE BignumSet, LONG n); Метод. Возвращает в BignumSet факториал n! 21.Fibonacci(BYTE BignumSet, LONG_PTR n); Метод. Возвращает в BignumSet число Фибоначи n. Fn+1 = Fn + Fn-1 22.LucNum(BYTE BignumSet, LONG_PTR n); Метод. Возвращает в BignumSet число Лукоса n. Ln+1 =Ln + Ln-1 23.FileSet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10); Метод. Загружает длинное число из файла (*.txt). Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла. Bignum-индекс длинного числа в массиве (0-255). BignumBase-база числа (от 2 до 36), по умолчанию = 10. 24.FileGet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10); Метод. Сохраняет длинное число в файл (*.txt). Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла. Bignum-индекс длинного числа в массиве (0-255). BignumBase-база числа (от 2 до 36), по умолчанию = 10. 25.Clear(LONG Bignum=-1); Метод. Освобождает память занятую длинным числом Bignum, или освобождает память занятую всеми числами при заданном параметре по умолчанию = -1. Начиная с v2.0.0.0 деструктор класса сам очищает память (при удалении класса или завершении процедуры в VBA). 26.LONG Val = BignumArraySize(); Метод. Возвращает количество чисел Bignum в созданном классе/массиве. Начиная с v2.0.0.0 (теперь массив чисел может быть произвольного размера, а не как ранее 256 чисел. Размер увеличиваться автоматически.) 2. Класс BignumArithmeticFloat - длинная арифметика с дробными числами. Кликните здесь для просмотра всего текста
Свойства и Методы BignumArithmeticFloat
1.Help(); HTML Справка (без параметров). 2.LONG Val = SizeBits(BYTE Bignum, LONG_PTR* pVal) = .LONG Val; Свойство. Задает и возвращает размер длинного числа в БИТАХ LONG Val. Bignum-индекс длинного числа в массиве (0-255). 3.BSTR* String = Bignum(BYTE Bignum, LONG BignumBase=10, LONG_PTR Precision=0, BSTR Separator=”.”, VARIANT_BOOL Exponential=-1) = BSTR* String; Свойство. Принимает и возвращает BSTR* строку String (задает число или возвращает значение). Bignum-индекс длинного числа в массиве (0-255). BignumBase-база длинного числа (от 2 до 36), по умолчанию = 10. Precision – точность (кол-во цифр в числе), по умолчанию = 0 - максимальная (равна заданному размеру в битах). Separator – символ разделителя целой и дробной частей числа, по умолчанию точка(“.”). Exponential – по умолчанию =-1 экспоненциальная запись, 0 – десятичная (в разработке). (При парсинге строки в число, ожидаемая десятичная точка берется из текущей локали, на системах, предоставляющих localeconv). 4.LONG Val = Sign(BYTE Bignum); Свойство. Возвращает знак длинного числа LONG Val.Возвращает 1 если Bignum > 0, 0 если Bignum = 0, и -1 если Bignum < 0. 5.LONG Val = Compare(BYTE Bignum1, BYTE Bignum2); Метод. Сравнивает два длинных числа. Возвращает 1 если Bignum1 > Bignum2, 0 если Bignum1 = Bignum2, и -1 если Bignum1 < Bignum2. 6.SizeBitsSet(BYTE Bignum, LONG_PTR SizeBits); Метод. Задает размер длинного числа в БИТАХ LONG Val. 7.BignumSet(BYTE Bignum, BSTR StringBSTR, LONG BignumBase=10, BSTR Separator=”.”); Метод. Задает число с параметрами аналогичными свойству Bignum(). 8.Sum(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Суммирует два длинных числа. BignumSet = Bignum1 + Bignum2 9.SumL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Суммирует длинное число с обычным. BignumSet = Bignum1 + LONG_PTR(х64:LONG_PTR= LONGLONG, х32:LONG_PTR= LONG) 10.Abs(BYTE BignumSet, BYTE Bignum1); Метод. Возвращает модуль значения из Bignum1 в BignumSet. 11.Subtract(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Вычитает из одного длинного числа второе. BignumSet = Bignum1 - Bignum2. 12.SubtractL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Вычитает из длинного числа обычное. BignumSet = Bignum1 - LONG_PTR. 13.Multiply(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Умножает одно длинное число на второе. BignumSet = Bignum1 * Bignum2. 14.MultiplyL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Умножает длинное число на обычное. BignumSet = Bignum1 * LONG_PTR. 15.Divide(BYTE BignumSet, BYTE Bignum1, BYTE Bignum2); Метод. Делит одно длинное число на второе. BignumSet = Bignum1 / Bignum2 16.DivideL(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Делит длинное число на обычное. BignumSet = Bignum1 / LONG_PTR. 17.Root(BYTE BignumSet, BYTE Bignum1); Метод. Извлекает квадратный корень из Bignum1. Результат возвращает в BignumSet. BignumSet = √ Bignum1. 18.Negate(BYTE BignumSet, BYTE Bignum1); Метод. Возвращает значение с противоположным знаком из Bignum1 в BignumSet. BignumSet = - Bignum1. 19.Power(BYTE BignumSet, BYTE Bignum1, LONG_PTR LONG_PTR); Метод. Возводит в степень LONG_PTR длинное число Bignum1, результат возвращает в BignumSet. BignumSet = Bignum1 ^ LONG_PTR. 20.Clone(BYTE BignumSet, BYTE Bignum1); Метод. Копирует Bignum1 в BignumSet. BignumSet = Bignum1 21.FileSet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10); Метод. Загружает длинное число из файла (*.txt). Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла. Bignum-индекс длинного числа в массиве (0-255). BignumBase-база числа (от 2 до 36), по умолчанию = 10. (При парсинге строки в число, ожидаемая десятичная точка берется из текущей локали, на системах, предоставляющих localeconv). 22.FileGet(BYTE Bignum, BSTR StringBSTRFileName, LONG BignumBase=10, LONG_PTR Precision=0); Метод. Сохраняет длинное число в файл (*.txt). Принимает BSTR* строку StringBSTRFileName в качестве полного пути и имени файла. Bignum-индекс длинного числа в массиве (0-255). BignumBase-база числа (от 2 до 36), по умолчанию = 10. Precision – точность (кол-во цифр в числе), по умолчанию = 0 - максимальная (равна заданному размеру в битах). 23.Clear(LONG Bignum=-1); Метод. Освобождает память занятую длинным числом Bignum, или освобождает память занятую всеми числами при заданном параметре по умолчанию = -1. Начиная с v2.0.0.0 деструктор класса сам очищает память (при удалении класса или завершении процедуры в VBA). 24.LONG Val = BignumArraySize(); Метод. Возвращает количество чисел Bignum в созданном классе/массиве. Начиная с v2.0.0.0 (теперь массив чисел может быть произвольного размера, а не как ранее 256 чисел. Размер увеличиваться автоматически.) 25.BSTR* String = GetToBignumInt(LONG Bignum, LONG BignumBase=10); Метод. Преобразовать Bignum из Float в Integer и вывести. ВАЖНО! преобразование происходит с заданной ранее точностью в битах для Float (SizeBitsSet). Без округлений, отбрасывается дробная часть. Будьте внимательнее в таких преобразованиях. Начиная с v2.0.0.0. 3. Класс VBA - набор функций/методов для работы в VBA, и в других COM/ActiveX поддерживающих языках Методы: 3.1 ArraySortS() - быстрая сортировка данных (String) в одномерном/двухмерном массиве Кликните здесь для просмотра всего текста
Параметры метода:
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 (без изобретения костылей). 3.2 FilterUnicodeChar() - получить/удалить любые символы Unicode из строки. Регистрозависимая. Кликните здесь для просмотра всего текста
Параметры метода:
1. StringIn - входящая строка 2. Второй параметр (EnableChar) - символы включаемые в итоговую строку (через "-" указывается диапазон, сам "-" выводится если его поставить первым символом в шаблоне) 3. Третий параметр (DisableChar) - символы исключаемые из итоговой строки ( через "-" указывается диапазон, сам "-"тудаляется если его поставить первым символом в шаблоне) . Последние два параметра - не обязательные. Можно задавать любой из них, можно все два, можно никакой - тогда выводится первоначальная строка 3.3 LikeUnicodeChar() - Сравнивает строку с маской/шаблоном (или наоборот исключая символы шаблона). Регистрозависимая. (v1.0.5.0 и выше) Кликните здесь для просмотра всего текста
Параметры метода:
1.stringIn - входящая строка 2.maskChar - маска/шаблон (через "-" указывается диапазон, сам "-" выводится/удаляется если его поставить первым символом в шаблоне) 3.invertMask - инвертировать маску (сравнение, исключая символы маски) Возвращает булево. 3.4 Trim() - удаляет из текста все пробелы, за исключением одиночных пробелов между словами. Кликните здесь для просмотра всего текста
Параметры метода:
1.StringIn - входящая строка 3.5 InStr() - ищем первое вхождение подстроки в строку. Регистрозависимая. Кликните здесь для просмотра всего текста
Параметры метода:
1.StringIn - строка в которой производим поиск 2.StringFind - подстрока для поиска в StringIn 3.Start - позиция с которой начинаем поиск в строке 3.6 Replace() - заменить одну подстроку на другую. Параметр Start - не усекает строку, в отличии от стандартной Replace. Регистрозависимая Кликните здесь для просмотра всего текста
Параметры метода:
1.StringIn - строка в которой производим поиск 2.StringFind - подстрока для поиска и замены в StringIn 3.StringReplace - подстрока на которую заменяем StringFind 3.Start - позиция с которой начинаем поиск и замены подстрок в строке 4.Count - количество замен 3.7 ArraySortV() - быстрая сортировка данных (Variant) в одномерном/двухмерном массиве Кликните здесь для просмотра всего текста
Параметры метода:
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й - нельзя. 3.8 Transpose() - быстрое транспонирование (на месте) двухмерного массива (поддерживаются все типы данных) Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - указатель на массив (ввод/вывод) 3.9 QRcodePrint() - Печать QR-кода 3.10 ConvertFormatImage() - конвертации графических форматов из одного в другой 3.11 GetRowsCountCSVansi() - возвращает кол-во строк в файле 3.12 GetRowCSVansi() - возвращает найденную строку по индексу 3.13 FindRowsInCSVansi() - возвращает найденную строку/строки по искомой подстроке 3.14 SortDeleteDuplicateRowsCSVansi() - сортировка и удаление дубликатов строк в csv/txt(ANSI) файлах 3.15 HashStringSHA() - хеширование строки разными алгоритмами SHA (+ новейшие SHA3) : 3.16 Array2Dto1D() - быстрое преобразования двухмерного массива в одномерный (данные не обрезаются, 2е измерение преобразуются в очередь) (v1.0.5.0 и выше) Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать 2.lLbound1 - нижняя граница нового массива (по умолчанию=0) 3.17 Array1Dto2D() - быстрое преобразование одномерного массива в двухмерный (данные не удаляются) (v1.0.5.0 и выше) Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать 2.lLbound1 - нижняя граница нового массива, 1е измерение (по умолчанию=0) 3.lLbound2 - нижняя граница нового массива, 2е измерение (по умолчанию=0) 3.18 ArrayFilterV() - фильтр для одномерного и двухмерного массива (тип данных VARIANT) с любым количества столбцов, с любом количеством условий (начиная с v2.0.1.0, в XLL c v3.2.1.0). Кликните здесь для просмотра всего текста
Параметры метода:
1. array_in - массив входящий (одномерный, двухмерный), тип данных VARIANT. 2. array_parameters - массив задаваемых параметров, тип данных VARIANT (6 параметров для одного условия, можно для одного и того же столбца, можно для разных). Количество условий не ограничено. Условия можно создать из списка, можно создать двухмерный массив и заполнить, можно забрать сразу с листа Excel. 3. array_out_index - режим вывода: 0- отфильтрованный массив, 1-массив индексов 4. array_out - массив результатов Новые инструменты для массива (начиная с BedvitCOM.dll_v2.0.2.0, BedvitXLL.dll_v3.2.2.0) Для массивов любого количества размерностей, тип данных VARIANT. Преобразование происходит "на месте" (штатным инструментом от Microsoft VariantChangeType, CharUpperW, CharLowerW) Для всех элементов массива, для которых возможны преобразования: 3.19 ArrayCharLowerV() - преобразовать все символы строки в нижний регистр Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать (на месте) 3.20 ArrayCharUpperV() - преобразовать все символы строки в ВЕРХНИЙ регистр Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать (на месте) 3.21 ArrayNumToCharV() - преобразовать все данные в тип: String Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать (на месте) 3.22 ArrayCharToNumV() - преобразовать все данные в тип: Double (числа сохраненные как текст) Кликните здесь для просмотра всего текста
Параметры метода:
1.array_in_out - массив, который нужно преобразовать (на месте) 4. Класс UnorderedMap - ассоциативный контейнер, содержащий пары ключ-значение с уникальными ключами. Поиск, вставка и удаление элементов имеют среднюю постоянную сложность. ...НОВЫЕ ФУНКЦИИ СМОТРИ В РАЗДЕЛЕ "Новости" И В "WIKI" 2.BedvitXLL (библиотека XLL c C API Functions для Excel) версия библиотеки XLL - 1.0.0.0 Добавлены функции 02/02/2021 - новая версия библиотеки XLL - 2.0.0.0 Добавлена вкладка команд. 16/04/2022 - новая версия библиотеки XLL - 3.0.0.0 Добавлен функционал работы с VBA-кодом (хранение, выполнение, шифрование). + Новый формат файла пользовательских сохранений (не совместим со старым). Область применения - Excel 2010 (х32, х64) и выше, VBA Устанавливается так же, как и "обычная" надстройка Excel (xla, xlam) в папку надстроек или просто открывается как файл. Содержит библиотеку BedvitCOM, распаковывает (в пользовательский "TEMP") и регистрирует автоматом COM при открытии XLL, и автоматически удаляет COM из реестра при закрытии XLL. т.е. пользователю НЕ нужно ничего самостоятельно регистрировать, нужно только открыть XLL - всё, можно работать в Excel с новыми функциями и COM-объектами из библиотеки COM в VBA (как с ранним, так и с поздним связыванием). Upd: 18.12.2022. Начиная с версии 4.4 библиотека СОМ выгружается в ту же папку, из которой запускается надстройка XLL. Для автоматического подключения пользователю нужно разово нажать кнопку подключения СОМ Примеры использования: Кликните здесь для просмотра всего текста
Начиная с версии xll v1.0.3.0 рекомендуется использовать раннее связывание, т.к. теперь библиотека сама подключает COM в References и пользователю не нужно писать доп код или подключать вручную COM. Раннее связывание, версия xll v1.0.3.0 и выше.
+Новые категории Функций в Excel: 1.XLLBignumArithmeticInteger - функции для работы с длинными целыми числами. Функции: 1.1 SumInteger() - сложение двух длинных/обычных целых чисел 1.2 SubtractInteger() - вычитание двух длинных/обычных целых чисел 1.3 MultiplyInteger() - умножение двух длинных/обычных целых чисел 1.4 DivideInteger() - деление двух длинных/обычных целых чисел - Неполное частное 1.5 ModInteger() - деление двух длинных/обычных целых чисел - Остаток от деления 1.6 PowerInteger() - возведение в степень длинного/обычного целого числа 1.7 ConvertBaseInteger() - конвертирование целого числа (строки) из одной базы в другую (от 2 до 36). 1.8 FactorialInteger() - факториал задаваемого числа. 2.XLLBignumArithmeticFloat - функции для работы с длинными дробными числами. Функции: 2.1 SumFloat() - сложение двух длинных/обычных чисел с плавающей точкой 2.2 SubtractFloat() - вычитание двух длинных/обычных чисел с плавающей точкой 2.3 MultiplyFloat() - умножение двух длинных/обычных чисел с плавающей точкой 2.4 DivideFloat() - деление двух длинных/обычных чисел с плавающей точкой 2.5 PowerFloat() - возведение в степень длинного/обычного числа 2.6 RootFloat() - извлечение квадратного корня из длинного/обычного числа 3.XLL - функции не попавшие в другие категории данной библиотеки, с разнообразным функционалом. Функции: 3.1 FilterUnicodeChar() - получить/удалить любые символы Unicode из строки. Кликните здесь для просмотра всего текста
Параметры функции:
1. StringIn - входящая строка 2. Второй параметр (EnableChar) - символы включаемые в итоговую строку (через "-" указывается диапазон, сам "-" выводится/удаляется если его поставить первым символом в шаблоне) 3. Третий параметр (DisableChar) - символы исключаемые из итоговой строки (через "-" указывается диапазон). Последние два параметра - не обязательные. Можно задавать любой из них, можно все два, можно никакой - тогда выводится первоначальная строка 3.2 TrimXLL() - удаляет из текста все пробелы, за исключением одиночных пробелов между словами. Кликните здесь для просмотра всего текста
Параметры функции:
1.StringIn - входящая строка 2.StringOut - результирующая строка 3.2 VlookupXLL() - это смесь ВПР() и ПРОСМОТР(). Подробное описание Кликните здесь для просмотра всего текста
Параметры функции:
1.ArrayFind - массив для поиска 2.Find- значение, которое ищем 3.ArrayResult - значение во втором массиве, соответствующее найденному значению в первом массиве. 3.3 GetRowsCountCSVansi() - возвращает кол-во строк в файле 3.4 GetRowCSVansi() - возвращает найденную строку по индексу 3.5 FindRowsInCSVansi() - возвращает найденную строку/строки по искомой подстроке 3.6 QRcodePrint() - Печать QR-кода 3.7 TextJoinXLL() - объединяет текст из нескольких строк, вставляя между текстовыми значениями указанные разделитель(и) - можно задать массив разделителей. Введенные числа будут считаться текстом. Аналог ОБЪЕДИНИТЬ (TEXTJOIN) - начиная с v2.0.1.7 Если объединенная строка содержит свыше 32767 символов (ограничение для ячейки), функция вернет ошибку #ЧИСЛО!. Кликните здесь для просмотра всего текста
Параметры функции:
1.Range - массив/диапазон строк 2.Delimiter - строка-разделитель (опционально = "") 3.IgnoreEmpty - игнорировать пустые ячейки в Range (опционально = 0 - не игнорировать) ...НОВЫЕ ФУНКЦИИ СМОТРИ В РАЗДЕЛЕ "Новости" И В "WIKI" +Команды меню (начиная с v2.0.0.0) + Help: Содержание + Лог текущей версии библиотеки. + Открыть (сохраненные настройки) + Сохранить в файл (текущие настройки) + Влияющие ячейки (на выделенный диапазон) + Зависимые ячейки (от выделенного диапазона) + Работа с Форматами ячеек (задать, сохранить, выбрать сохраненный и т.д.) + Конвертировать число сохраненное как текст в число (с удалением пробелов, мягких переносов, непечатаемых символов между цифрами) - реализовано v2.0.1.7 + Разорвать связи на текущем листе с другими ЛИСТАМИ этой книги и внешними файлами + Транспонирование на месте + Работа с именами (показать скрытые, удалить ошибочные, удалить все),в т.ч. скрытые, не отображаемые в диспетчере имён + Перевести условное форматирование в обычный формат ячейки в выделенном диапазоне или на всем листе - реализовано v3.0.0.0 + Подбор слагаемых под нужную сумму + Выделить разным цветом группы дубликатов в выделенном диапазоне или на всем листе с выводом статистики - реализовано v2.0.2.4 + Быстрый поиск значений на листе + Вывести на новый лист список всех листов текущей книги (с гиперссылкой) + Вывести на новый лист список всех ячеек текущей книги, содержащих ошибку (с гиперссылкой) - реализовано v2.0.2.4 + Вывести на новый лист список всех внешних связей или ячеек текущей книги, содержащих ссылку на другую книгу(с гиперссылкой) - реализовано v3.0.0.0 + Удалить пустые строки и столбцы в данных на листе + А,R - Стиль ссылок: А1, R1C1 + Блок работы с VBA-кодом (хранение, выполнение, просмотр по паролю и т.д.) + Блок работы с хранением и шифрованием диапазонов (формул, значений) листа Excel + BedvitCOM: ON/OFF/R - Режимы автоматического подключение библиотеки BedvitCOM в References (VBA) и реестре Windows + XLL Язык меню: RU, EN (сейчас поддерживается только RU) + XLL Диалог: - режим диалога, см. Диалог + XLL API: возможность использования команд XLL в VBA, с задавливаемыми параметрами( первый параметр для каждой команды - API диалога: "0"-Запрос пользователю, "1"-Да, "2"-Нет, "3"-Отмена. Задаётся отдельно для каждого диалога, т.е. строка "0123" задаёт 4 параметра: "Запрос пользователю", "Да", "Нет", "Отмена" на 4 последовательных диалога) ...НОВЫЕ КОМАНДЫ МЕНЮ СМОТРИ В РАЗДЕЛЕ "Новости" И В "WIKI" Версии библиотек можно посмотреть в имени архива или свойствах файла. В XLL эти свойства скрыты, нужно временно сменить расширение файла на DLL, см. рис. ниже. |
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 20
Комментарии
-
Запись от SoftIce размещена 07.08.2019 в 07:56 -
Запись от Usaga размещена 07.08.2019 в 09:18 -
SoftIce назовите хотя бы одну функцию с Bedvit. Библиотеки да, категории, что бы не перепутать со стандартными в Excel то же да (т.к. они относятся к данной библиотеки, поэтому и начинаются с названия библиотеки), функции и методы не одного.
Возможно название категорий можно сменить, и сделать без названия библиотеки. Чисто теоретически, они могут совпасть с другими подгружаемыми библиотеками. Зато не будет везде Bedvit-ов!
Ну а вообще, я рад что вы зашли в мой блог!
Что еще плохо?Запись от bedvit размещена 07.08.2019 в 09:44 -
Запись от bedvit размещена 07.08.2019 в 09:48 -
Запись от bedvit размещена 07.08.2019 в 11:09 -
Версия 1.0.0.6 - исправлена ошибка в функции FilterUnicodeChar в СОМ.DLL, скорректированы наименования категорий.
Оставил "bedvit" только в наименовании библиотеки (удалил из категорий функций Excel). А так как, мало кто пишет XLL, думаю других похожих категорий не будет (конкурентов по наименованию).Запись от bedvit размещена 07.08.2019 в 12:55 -
Д21/08/2019 - v 1.0.0.9
1. InStr - на 2% быстрее предыдущей
2. Replace - найдена ошибка, исправлена.
Теперь быстрее на 1,5% замена символов и быстрее на 100% - если нет совпадений (в два раза).
Добавлена проверка на переполнение BSTR-строки: E_OUTOFMEMORY
Производительность функции - 1 млр. замен - 12,5 сек.
Visual Basic 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Option Explicit Sub RUN() 'для раннего связывания 'Подключаем библу "BedvitCOM" в References - version(1.0) для раннего связывания (если библа уже подключена - On Error Resume Next) 'Для раннего связывания сначала включаем в References библу, потом в конце кода отключаем. Для позднего связывания этого не нужно (см.ниже). 'Если BedvitCOM не оключать, могут быть ошибки в этом файле при отсутствии зарегестрированной BedvitCOM - выслали кому-то файл, или открыли из другого ПК и т.д., где не установлеена или не открыта надстройка BedvitXLL (которая автоматом распаковывает и регистрирует библиотеку BedvitCOM в реестре) или не зарегистрированна BedvitCOM вручную 'References хранятся в файле On Error Resume Next ThisWorkbook.VBProject.References.AddFromGuid "{77D79CA3-15A0-4310-B8D8-0BCBE3F72D96}", 1, 0 ' подключаем библу "BedvitCOM" в References - version(1.0) для раннего связывания (если библа уже подключена - On Error Resume Next) Test ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("BedvitCOM") 'оключаем библу в References End Sub Sub Test() Dim s As String, x, t, s1, s2, s3 Dim bVBA As BedvitCOM.VBA: Set bVBA = New BedvitCOM.VBA 'раннее связывание 'Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание s = String$(1000000000, "1") s1 = "1" s2 = "2" t = Timer For x = 1 To 1 s3 = bVBA.Replace(s, s1, s2) Next Debug.Print "bVBA.Replace "; Timer - t, "size"; Len(s3) End Sub
Запись от bedvit размещена 21.08.2019 в 18:58 -
Запись от bedvit размещена 26.08.2019 в 23:34 -
Запись от bedvit размещена 04.09.2019 в 10:35 -
Запись от bedvit размещена 12.12.2019 в 18:50 -
По сведениям полученным из осведомлённых источников ядро новой bedvitOS будет использовать новый тип логики от Баженова.
Запись от untyped размещена 12.12.2019 в 20:06 -
Запись от bedvit размещена 13.12.2019 в 09:42 -
Запись от SoftIce размещена 13.12.2019 в 11:26 -
SoftIce, нужно что?
1.Если последние комментарии - да, ни о чем, так вода. Не знаю зачем они здесь. Кому они полезны в таком виде.
2.Если по названию библиотек, тренировался, назвал по нику - вот и все, без претензий на оригинальность и избранность. Было удобно идентифицировать на форуме (не только этом), откуда/чья библиотека.
3.Если по функционалу - опять же попилил (может и поговокодил, не мне судить) в целях профилактики застойных явлений в ГМ.
Сама длинная арифметика узкоспециализированное решение, нужное узкому кругу спецов - это понятно и данное решение революцию не предполагает.
А суть в том, что можно же в данный механизм реализовать любой нужный функционал (кроме GUI), который можно использовать в Excel или в продуктах поддерживающих СОМ.
Нужно ли это - вопрос.
Готов послушать вашу точку зрения.Запись от bedvit размещена 13.12.2019 в 12:21 -
21/08/2020 XLL версия v1.0.3.0
Начиная с версии xll v1.0.3.0 рекомендуется использовать раннее связывание, т.к. теперь библиотека сама подключает COM в References и пользователю не нужно писать доп. код или подключать вручную COM.
Преимуществом раннего связывания в VBA является то, что видны все методы и свойства объектов, возможность их выбора из выпадающего списка, полное описание всех свойств и методов библиотеки в обозревателе объектов (F2), а также скорость кода.
Подключение осуществляется в открытой книге, в файле не сохраняется (не возникает ошибки подключения на другом ПК, где нет XLL).Запись от bedvit размещена 21.08.2020 в 13:04 -
Обнаружена интересная особенность: событиями Excel делится сначала с VBA, потом с С++ (с DLL).
Из этого вытекает следующее:
1. Код VBA всегда будет опережать по событиям код из XLL.
2. Это нужно учитывать в своих проектах при использовании DLL.
В частности, в моем случае, при обработки 3х событий в VBA - открытия книги, создания новой или после сохранения книги, автоматическое подключения библиотеки СОМ в References (в для раннего связывания) будет происходить после кода VBA.
Решением в данном случае (для VBA, который будет использовать одновременно и эти 3-и события и функционал XLL и раннее связывание) может быть следующее:
1.(предпочтительный) Дать секунду времени для загрузки xll (для авто-подключения COM), к примеру так
2. Ручное подключение COM в References (при выключенной XLL). Такие подключения XLL не трогает и они сохраняются вместе с файлом под вашу ответственность (условия: СОМ должна быть уже зарегистрирована)Visual Basic 1
Application.OnTime TimeValue(Now + TimeValue("0:00:01")), "Ваш_Макрос"
3. Использовать при таких событиях позднее связывание вместо раннего (условия: СОМ должна быть уже зарегистрирована)
4. Опередить XLL и самостоятельно подключить COM для раннего связывания - кодом
(это подключение останется с файлом, как в 1-м варианте)Visual Basic 1
ThisWorkbook.VBProject.References.AddFromGuid "{77D79CA3-15A0-4310-B8D8-0BCBE3F72D96}", 1, 0 ' подключаем COM в References"
Если не хотим сохранять подключение, можно кодом отключить(см. примеры использования в основной теме под спойлером)Visual Basic 1
ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("BedvitCOM") 'отключаем СОМ в References
(условия: СОМ должна быть уже зарегистрирована)
Лично, пользуюсь 1-м вариантом - самым простым и универсальным (для остальных решений есть определенные условия их применения, см.условия).Запись от bedvit размещена 26.08.2020 в 19:04 -
02/02/2021 - новая версия библиотеки XLL - 2.0.0.0
Большое обновление.
Добавлена вкладка команд и контекстное меню.
Добавлен набор команд (описание на сайте)
Куплен хостинг (потренируюсь в HTML и JavaScript), если будет время оформлю там видео-описание по функционалу библиотек.Запись от bedvit размещена 05.02.2021 в 17:36 -
13/06/2022 - BedvitXLL v.3.0.0.0-v.3.2.0.0
+ Новые команды меню (см. описание в теме)
+ Настраиваемое меню - теперь меню пользователь может настраивать под себя. Настройки хранятся. Можно ими делится, см. ниже.
+ Новый формат файла пользовательских настроек + всех сохранений пользователя.
+ Блок работы с VBA-кодом (хранение, выполнение, просмотр по паролю и т.д.)
+ Новый установщик (для ленивых). Надстройку можно самому поместить в папку надстроек или просто открыть как файл Excel.Запись от bedvit размещена 23.06.2022 в 20:43 -
Спасибо большое! Топовая библа и близко не имеющая аналогов!
Тестирую новый функционал…Запись от Jack Famous размещена 20.12.2022 в 17:38 -
del
Запись от Jack Famous размещена 20.12.2022 в 17:38