Так бывает когда это выгрузка из 1С и листы скрыты и есть объединенные ячейки.
«Бритва Оккама» или «Принцип Калашникова»?
06.02.2024 17:54:14
DAX Studio не справился, потому как я не умею его готовить. Посему пришлось использовать решение выложенное выше с апгрейдом: 1.Выгружаются данные любого размера (у меня 2,5 млн строк, 60 столбцов, в основном текст) 2.Спец.символы экранируются, в данном случае кавычки 3.Числа сохраняются без кавычек, что правильно распознается SQL-сервером 4.Дата сохраняется в формате, который понимает SQL: "yyyy-mm-dd hh:mm:ss" 5.Отключен Timeout, который вызывал отключение запроса на больших временных отрезках (больших данных): cmd.CommandTimeout = 0 ' 6.Поменял фильтр CSV-файлов для нового Excel, кто хочет может допилить до "правильного" кода не привязанного к фильтру, а привязанного к CSV: OFD.FilterIndex = 21 7.Оставил всеми любимый GoTo - на функционал не влияет, кто хочет подпилить - прошу. 8.Файл выгружается в кодировке Windows-1251, не знаю, может ли VBA выгружать в другой, мне было не нужно, можно тоже подпилить при желании. Да, забыл... По скорости выгрузки +- паритет с DAX Studio (у меня в тестах быстрее, чем DAX Studio), Плюс NULL-значения не выгружает (;;), что в SQL и распознается как NULL. DAX Studio выгружает как пустую строку(;"";), что, я считаю, некорректно, т.к. в SQL попадает как пустая строка. Плюс DAX Studio дату оформляет в виде строки с кавычками так, что SQL не распознает как дату. Плюс DAX Studio проставляет в число системный разделитель дробной части, т.е. "," (запятая). В инструменте всегда "." (точка), что корректно загружается в SQL. Из особенностей инструмента: числовые значения если число дробное и меньше нуля, ведущий нуль до разделителя дробной части не проставляется, пример: число 0,002365 отображается как .002365, так отрабатывает
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||||
|
05.02.2024 09:10:05
04.02.2024 BedvitXLL.dll_v5.1
+ +Добавлена обработка ошибок на листе Excel при шифровании, дешифровки и сохранении формул/значений. Как сохраняются текстовые форматы в функциях форматирования в разных локализациях Win + Excel, как сам Excel с этим справляется пока вопрос открытый.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
30.01.2024 10:24:54
Senaki, к сожалению, единственного тестера в той теме забанили (не за взлом - я давал офф. разрешение, как разработчик на "стресс-тестирование", а за несоблюдение других правил). Сам с интересом почитаю, если такая информация появятся.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
19.01.2024 00:07:42
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
18.01.2024 10:32:11
Бахтиёр,
а) этот инструмент позволяет зашифровать нужный диапазон данных (формул) и пользователь может так же на них ссылатся, когда нужно - можно этот диапазон расшифровать и сделать пересчет модели. б) формулу можно пересчитать и зашифровать, при следующем пересчёте - можно сделать это еще раз. В динамике получать результат из зашифрованных формул нельзя. +Для работы нужна надстройка, ее можео просто открыть или установить в папку надстроек. Работает как обычная надстройка под правами пользователя. +Поддерживаются все символы юникода, какие сможет отобразить Excel - это вопрос шрифтов.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
18.01.2024 00:24:21
Новая редакция BedvitXLL64v5.0b (beta)
Добавленный функционал: +для каждой команды есть всплывающие подсказки +хранить и шифровать можно значения (value2) или формулы (formula). Формула может содержать максимум 8 тыс. символов +добавлены разные алгоритмы шифрования +тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании. При расшифровки нужен только 1 пароль (повтор пароля нужен только для шифрования, для расшифровки достаточно одного-первого) +шифровать можно на листе, шифровать можно сохраняемые диапазоны и шифровать можно и файл пользовательских сохранений. +сохранять диапазон в списке диапазонов можно в зашифрованном виде или не в зашифрованном (в незашифрованном эффективнее сжимаются сохранения т.к. обрабатываются все дубликаты во всех сохранённых диапазонах, а не частично в отдельном диапазоне), но можно шифровать сам файл пользовательских настроек - эффективность сжатия сохраняется. +есть возможность автоматически определять границы диапазона, выделяя весь лист или целый столбец или целую строку, см. usedrange +добавлена возможность включать пользовательские сообщения и сообщения в статус-баре Excel +ЭКСПЕРЕМЕНТАЛЬНО: добавлено автоматическое распознавание разных блоков зашифрованных диапазонов, с разными алгоритмами и их расшифровка разом (см. видео).
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
11.01.2024 11:08:53
Jack Famous, Спасибо за тест! Твоих предложений много, нужно отобрать интересные и полезные! Видео - это тема, может youtube - канал завести?
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
11.01.2024 09:23:05
Мое почтение, джентльмены!
В продолжении темы Сделал инструменты шифрования алгоритмами AES данных на листе Excel и в коде VBA. Виды алгоритмов шифрования можно выбирать. В тесте работает алгоритм AES256:CBC. Функционал: 1. Можно шифровать как отдельные значения так и диапазоны/массивы. 2. Шифровать данные можно прям на листе Excel, с дальнейшей расшифровкой нужного диапазона или всего листа. 3. Зашифрованные данные можно хранить в XLL как в виде значений (value2), так и в виде формул (formula) 4. Алгоритм шифрования AES256:CBC. Использована библиотека 5. Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому 6. Зашифрованные диапазоны - независимые, т.е. можно каждый отдельный диапазон зашифровать со своим паролем, можно зашифровать диапазон дважды (для гиков ) 7. Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк) - используется алгоритм сжатия 8. Реализован механизм ( 9. Данные на листе Excel шифруются для каждой ячейки отдельно (для возможности хранить и расшифровывать данные независимо для каждой ячейки) с применением п,7. Для VBA (одно значение или массив) зашифровываются в один массив байт, что позволяет применять и п.7 и п.8 10. Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт). Шифрование на листе Excel и хранение данный в XLL: Шифрование данных VBA: Функции: 1. VARIANT stringProtect = VariantAES256Encrypt(VARIANT variantIn, BSTR password, BSTR salt, LONG mode) 2. VARIANT variantUnProtect = VariantAES256Decrypt(VARIANT byteArrayIn, BSTR password, BSTR salt, LONG mode) Можем обсудить, кому интересно, подробности и, возможно, внести новый функционал, если он нужен и не реализован. Надстройка:
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
03.01.2024 11:40:16
БМВ, Михаил, единственного тестера в данной теме забанил, эх...
В итоге не используя дыры самого VBA, сам код можно хранить так же безопасно как в .rar или запароленном Excel-файле. Целесообразность будет определятся другими плюшками, которых нет в других инструментах. Если кому интересно будет обговорить эти плюшки - можем обсудить в этой же теме. Плюшка в виде выполнения кода без ввода пароля - не целесообразна в виду невозможности гарантировать конфиденциальность выполняемого VBA-кода.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||||||||||||
|
31.12.2023 14:30:03
Ну что, вскрываемся?
Пароль:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||
|
20.12.2023 22:47:50
Думаю с ИИ будет так же как и с космосом, после полета Гагарина писали и планировали в 21 веке быть на луне, марсе, венере, с околоземными станциями и базами на планетах.
В итоге случилось не так, как думали. Всем стало просто не интересно и технологии не вышли на нужный уровень.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
20.12.2023 13:53:17
У меня были идеи, когда я эту тему начинал, но сейчас я решил не боротся с мельницами, ибо Microsoft заинтересованы, что бы мы этого как раз не делали, и вносят корректировки. Зачем мне с... против ветра?)
«Бритва Оккама» или «Принцип Калашникова»?
|
|||
|
20.12.2023 13:20:17
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||
|
20.12.2023 13:09:20
Такая реализация уже есть, там код C/C++ скомпилирован в бинарный в самой xll. Им я делюсь, его можно запустить, а посмотреть его проблематично, особенно в подробностях.
Краткое описание функционала можно посмотреть здесь: Если про код VBA - эта схема не рабочая. Или нужно убить кучу времени, на парсинг VBA- кода и выполнение его в xll, а не в дырявом трансляторе/ ide vba
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
20.12.2023 12:59:04
4 вариант с передачей пароля или не запароленного кода равносильно 3му варианту. Не вижу зачем нужен 3й вариант, и кого мы хотим в этом случае обмануть, себя или пользователя.
Жду guid по 4 варианту, потом выложу пароль.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
20.12.2023 12:27:02
PoToLoK™, добрый день! Жаль, что у вас не получилось посмотреть GUID, я думал ваш способ это сможет решить, судя по мат.части - он 100% рабочий (может вы что-то не так делаете, не с той стороны подходите, не та тональность? Посмотрите внимательнее матчасть, где-то упускаете!)
А по концепции - текущая - считаю самая корректная, пользователь доверяя код надстройке, гарантированно сохранит этот код в тайне, если его запаролит. Если хочет поделится - может сохранить без пароля. Сохранность кода, в других схемах я гарантировать не могу, в силу принципиальной невозможности это сделать на уровне VBA. Парсить код и выполнять на С++ в библе, я не готов. И предлагать заведомо дурявый инструмент тоже. Инструмент останется хранимкой, возможно добавлю еще каких-то плюшек, ибо хранение в запароленном файле Excel почти то-же самое по функционалу. Возможно добавлю хранение разных VBA-модулей с разным паролем, один пользователь сможет выполнять какой-то свой блок или несколько и т.д.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
19.12.2023 22:10:58
Кому интересно там же и замеры скорости других схожих функций. Еще надо иметь ввиду, что ВПР() не ищет строку более 255 символов. Иногда это критично. На VBA заведомо нельзя написать функцию быстрее штатной (это нужно что бы сидели Питонисты в разработчиках Excel, что пока не наблюдается. Хотя с функциями суммеслиМН() и другими ...МН есть вопросы). Да же на стоковом С API Excel это сложно. Хотя доступны все фишки: расспарраллеленный расчет как в самой функции, так и выполнение в потоках самого Excel, ассинхронность, прямое управление памятью, никакого сборщика мусора, исключению СОМ-буфера, работаешь напрямую с ячейками листа, язык Си на котором написаны и родные функции и т.д. За скорость нужно платить, все ноги простреленные, и соседские рикошетом...
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||
|
19.12.2023 16:21:05
Мне это не нужно, а просто из интереса - сейчас нет времени. Было бы обсуждения и хорошие идеи, можно было бы на интерес запилить.
Оставлю инструмент как хранилище кода, с возможности его запаролить. И выполнить или посмотреть код, только после ввода пароля, т.е. когда не нужно скрывать код во время выполнения. Как изначально и задумывалось.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
19.12.2023 12:47:07
Мое почтение, джентльмены!
Cериализация и десериализация типа данных Поддерживаются базовые типы и массивы. Объекты не сериализуются. В некоторой степени - аналог Использование простое, как обычная функция (предварительно подключив или открыв надстройку по ссылке чуть ниже и COM в автоматическом/ручном режиме):
Особенности: 1. Cериализация в байтовый массив 2. Размер массива не может превышать 2^32 элементов (около 4Гбайт). Это ограничение самого COM - массива. В С++ (в другом контейнере) сохранял файлы боле 4,5 Гб. 3. Реализован похожий механизм ( Надстройка
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||
|