Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 88 След.
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
testuser написал:
в vba получить указатель разименовать, поработать с данными, и отпустить указатель,  как буд-то ни чего не был,  а менеджер памти Excel пусть делает что хочет. В общем на VBa все это не проблемма
Теперь все прояснилось, благодарю.
Цитата
testuser написал:
нельзя ли ее привести к какому-то такому виду?
Уверен, что после указателей, вам не составит труда справится и с этой проблемой!
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
testuser написал:
MS почему-то нет по ней информации

Скрытый текст


Цитата
testuser написал:
освобождение указателя на массив, но это не проблема.
уверен, что вы не до конца понимаете с чем столкнетесь. Зачем вам это? Как вы с этими данными будете работать?
Не будет там никакого safearrey, это СОМ, не путайте.

Советую к ознакомлению. Memory Management in Excel
Изменено: bedvit - 18.04.2024 13:43:59
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
testuser написал:
передавать/получать данные непосредственно по указателю массива типа XLOPER12??
передавать куда, и получать откуда? XLOPER12 это Си-шная структура, кто будет управлять памятью, когда я вам передам указатель на массив? Кто будет освобождать память занятую элементами массива? Каковы границы жизни указателя на массив и данных в нем (связан с первыми вопросами)?
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Что отфильтровать? При чем здесь умная таблица? Если ты про свое, то я говорю про обычную выгрузку и про копи-паст. Все они вставляют в скрытый диапазон. А про то, о чем ты говоришь - я без кода не понимаю.
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
Jack Famous написал:
ВЫГРУЗКЕ (практически ей и является), а у неё заполнение скрытых ячеек, как раз, не осуществляется.
Напиши код, когда ОБЫЧНАЯ выгрузка не заполняет скрытые ячейки.

У меня ОБЫЧНАЯ выгрузка все заполняет.
Код
  Range("a4:a8") = ArrV1
Изменено: bedvit - 18.04.2024 10:37:30
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
Jack Famous написал:
будет "=СУММ(A1:A:5)", то так строкой и вставится?
Да.
Цитата
Jack Famous написал:
Jack Famous : Про вставку в скрытые не упомянул
А может быть по другому? Работает так же, как и обычная вставка - вставляется в указанный диапазон, неважно скрыт он или нет. Штатная работает так же.
Изменено: bedvit - 18.04.2024 10:01:42
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
Jack Famous написал:
про xltypeNil непонятно.
Это Empty.

Добавил варианты использования в первое сообщение.
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Думаю, что в моем классе всё то же самое)
Цитата
testuser написал:
непосредственно на массивы данных в ячеек
- нет такого. Есть данные на "сейчас" пересчитанные или сырые. Хочешь в динамике? Получай ещё раз (см. xlcoerce).
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Цитата
Jack Famous написал:
у тебя 5 аргументов в Run. Скорректируй в соответствии
Спасибо за замечание, переписывал из справки Microsoft, у меня значит 4й в методе и 5 в Run.
Цитата
Jack Famous написал:
xltypeNil непонятно
это пустой XLOPER12, в VBA не смотрел какой это тип. Надо проверить, можете потестировать, возможно Empty.

testuser, да похож на Variant, только немного попроще.
Данный инструмент XLLcmdE12xlSet() по скорости обгоняет .Value2 на 15%
XLOPER12 используется в Excel C API, так же как Variant в VBA. Собственно это основной тип (структура) данных. Для VBA, Excel трансформирует  XLOPER12 в Variant и наоборот. В XLL я делаю это сам (ранее руками, теперь написал свой класс XloperX, даже в новостях от 7.04.24 отметил.)
Изменено: bedvit - 17.04.2024 18:47:49
«Бритва Оккама» или «Принцип Калашникова»?
Вставить данные на лист Excel без преобразования (xlSet)
 
Моё почтение, джентльмены!
Инструмент для вставки данных на лист Excel без преобразования.
т.е. "1" так и вставится как текст, а не как число.

Не нужен апостроф, не нужен формат ячейки.
Нужна надстройка BedvitXLL(бесплатная).

Так же быстро заполняет диапазон одним значением.

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

Функция/Метод 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!, #ЧИСЛО! - если ошибка.


Пример использования:
Код
Option Explicit

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
Изменено: bedvit - 18.04.2024 11:31:00
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Поправил, спасибо.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Цитата
Jack Famous написал:
Я через ENum сделал
Можно и так (все в одном месте), кому как удобно.
Цитата
Jack Famous написал:
У тебя 28 вместо 128, кстати
Где?
«Бритва Оккама» или «Принцип Калашникова»?
Генерация QR кодов в эксель
 
XLL это обычная надстройка, ее не нужно запускать все время. Ее нужно поместить в папку для надстроек и подключить (поставить галку в надстройках). Если файл открывать из любого другого места, без размещения в надстройках, он будет открыватся как обычный файл, и при закрытии Excel, нужно будет открывать ещё раз.
Еще есть файл установки, он делает все сам (размещает в парке надстроек - надстройку) и подключает её (ставиь галку в надстройках). Выполняется один раз.

Когда перестала работать формула, появлялась ли какая ошибка?
Изменено: bedvit - 05.04.2024 07:45:13
«Бритва Оккама» или «Принцип Калашникова»?
Генерация QR кодов в эксель
 
При каких действиях слетела надстройка? Можно поставить заново и начисто (удалив, в папке надстроек файлыBedvitXLL.dll и BedvitCOM.dll и BedvitXLL.bin). Но хотелось бы понять причину, по которой перестало работать.
«Бритва Оккама» или «Принцип Калашникова»?
Как ускорить эксель?, задействовать всю производительность компьютера для работы Эксель
 
Так бывает когда это выгрузка из 1С и листы скрыты и есть объединенные ячейки.
«Бритва Оккама» или «Принцип Калашникова»?
Экспорт данных из модели Power Pivot в cvs или файлы Excel
 
Цитата
PooHkrd написал:
Смотрите  здесь . Экспериментируйте на копии!
Цитата
Gerzzog написал:
Сработало на модели где немного строк, а вот на большой модели макрос выбивает ошибку "An error occurred - Method Open of object _Recordset failed"
Была задача автоматизировать процесс в одну кнопку.
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, так отрабатывает Str(), такие числа нормально распознаются, проблем не было. Иногда число отображается в Экспоненциальном виде 2.12344E+21, по той же причине. В моем проекте с этим тоже проблем не было.


Код
'Экспорт в CSV из модели данных PowerQuery
'06.02.2024

'Для работы нужно активировать библиотеки (Tools -> Preferences...):
'-Microsoft Scripting Runtime
'-Microsoft ActiveX Data Objects 6.1 Library
'-Microsoft ActiveX Data Objects Recordset 6.0 Library

Option Explicit

Public FSO     As New FileSystemObject

Sub main()

    Dim ModelList As String
    Dim OFD    As FileDialog
    Dim i      As Integer
    Dim ModelNum As Integer
    Dim tmp    As String
    Dim t

    ModelList = "Доступные в данной книге модели:" + Chr(10) + Chr(13) + Chr(13)
    If ThisWorkbook.Model.ModelTables.Count <> 0 Then
        For i = 1 To ThisWorkbook.Model.ModelTables.Count
            ModelList = ModelList & i & ". " & ThisWorkbook.Model.ModelTables.Item(i).Name & Chr(10) & Chr(13)
        Next i
    Else
        ModelList = ModelList & " Нет доступных моделей"
    End If


ModelNameInput:

    ModelNum = 0
    tmp = InputBox(ModelList, "Введите номер модели")

    If IsNumeric(tmp) Then
        If CInt(tmp) > ThisWorkbook.Model.ModelTables.Count Or CInt(tmp) <= 0 Then
            MsgBox "Incorrect Model num", vbOKOnly
            GoTo ModelNameInput
        Else
            ModelNum = CInt(tmp)
        End If
    Else
        If tmp <> "" Then
            MsgBox "Incorrect Model num", vbOKOnly
            GoTo ModelNameInput
        Else
            Exit Sub
        End If
    End If

    Set OFD = Application.FileDialog(msoFileDialogSaveAs)

    OFD.Title = "Выберите путь и имя файла"
    OFD.ButtonName = "Сохранить"
    OFD.FilterIndex = 21
    OFD.InitialFileName = "export.csv"
    OFD.InitialView = msoFileDialogViewLargeIcons

    t = Timer
    If OFD.Show <> 0 Then
        Call ExportToCsv(ThisWorkbook.Model.ModelTables.Item(ModelNum).Name, OFD.SelectedItems.Item(1), True)
    Else
    End If
    
    Set OFD = Nothing
    MsgBox "Готово! Время, сек.: " & (Timer - t), vbInformation
End Sub


Public Sub ExportToCsv(QueryName As String, exportPath As String, ShowColumnNames As Boolean)
    Dim wbTarget As Workbook
'    Dim ws As Worksheet
    Dim rs As Object
    Dim cmd As New ADODB.Command
    Dim fileCSV As TextStream
    Dim i As Long, x, max_iter, iter, sn, row, col, strCSV As String
    Dim batch_size: batch_size = 1000 ' Размер одного блока '1000
    
    Application.StatusBar = "(" & Now() & ") Экспорт данных в CSV..."
    DoEvents
    
    Set wbTarget = ThisWorkbook

    ' Загрузка модели
    wbTarget.Model.Initialize

    'Send query to the model
    Set cmd.ActiveConnection = wbTarget.Model.DataModelConnection.ModelConnection.ADOConnection
    cmd.CommandTimeout = 0 ' Отключение прерывания подключения после определенного времени
    cmd.CommandText = "EVALUATE '" & QueryName & "'"   '

    Set rs = CreateObject("ADODB.Recordset")
    rs.Open cmd

    Set fileCSV = FSO.CreateTextFile(exportPath, True)

    If ShowColumnNames Then
        For i = 0 To rs.Fields.Count - 1
            strCSV = strCSV & IIf(i > 0, ";", "") & VarToCSV(Mid(rs.Fields(i).Name, InStr(1, rs.Fields(i).Name, "[") + 1, Len(rs.Fields(i).Name) - InStr(1, rs.Fields(i).Name, "[") - 1))
        Next i

        fileCSV.Write strCSV & vbNewLine
    End If
    
    max_iter = rs.RecordCount \ batch_size + IIf(rs.RecordCount Mod batch_size, 1, 0)
    For iter = 1 To max_iter
        sn = rs.GetRows(batch_size)

        ReDim c(0 To UBound(sn))
        ReDim b(0 To UBound(sn, 2))

        For row = 0 To UBound(sn, 2)
            For col = 0 To UBound(sn)
                c(col) = VarToCSV(sn(col, row))
            Next
            b(row) = Join(c, ";") 'строка
        Next
        strCSV = Join(b, vbNewLine) & vbNewLine 'строки
        fileCSV.Write strCSV
    Next iter

    fileCSV.Close
    rs.Close
    Set fileCSV = Nothing
    Set rs = Nothing
    Set cmd = Nothing
    
    Application.StatusBar = False

End Sub

Function VarToCSV(ByVal v) As String

    If VarType(v) = vbDate Then
        If v = Int(v) Then
            VarToCSV = FORMAT(v, "yyyy-mm-dd")
        Else
            VarToCSV = FORMAT(v, "yyyy-mm-dd hh:mm:ss")
        End If
            VarToCSV = """" & VarToCSV & """"
            
    ElseIf VarType(v) = vbString Then
        VarToCSV = """" & Replace(v, """", """""") & """"
        
    ElseIf VarType(v) = vbEmpty Then
        VarToCSV = "" '"NULL"
        
    ElseIf VarType(v) = vbNull Then
        VarToCSV = "" '"NULL"
        
    Else
        VarToCSV = Trim(Str(v))
        
    End If
    
End Function

Изменено: bedvit - 06.02.2024 18:43:23
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
04.02.2024 BedvitXLL.dll_v5.1

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

Как сохраняются текстовые форматы в функциях форматирования в разных локализациях Win + Excel, как сам Excel с этим справляется пока вопрос открытый.
Изменено: bedvit - 05.02.2024 10:05:30
«Бритва Оккама» или «Принцип Калашникова»?
Экспорт данных из модели Power Pivot в cvs или файлы Excel
 
Андрей VG, Андрей привет! Подскажи, а существует ли в DAX Studio.возможность автоматизировать процесс выгрузки данных в CSV. К примеру жмакнув где-то кнопку?
«Бритва Оккама» или «Принцип Калашникова»?
Разъеснение по взлому XLL от bedvit
 
Senaki, к сожалению, единственного тестера в той теме забанили (не за взлом - я давал офф. разрешение, как разработчик на "стресс-тестирование", а за несоблюдение других правил). Сам с интересом почитаю, если такая информация появятся.
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
Релиз BedvitXLL v5.0
Добавил описание на сайт, примеры шифрования тоже. Всем, кому интересно шифрование в XLL. Шифрование в COM
Изменено: bedvit - 22.01.2024 09:16:12
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
Бахтиёр,
а) этот инструмент позволяет зашифровать нужный диапазон данных (формул) и пользователь может так же на них ссылатся, когда нужно - можно этот диапазон расшифровать и сделать пересчет модели.
б) формулу можно пересчитать и зашифровать, при следующем пересчёте - можно сделать это еще раз. В динамике получать результат из зашифрованных формул нельзя.

+Для работы нужна надстройка, ее можео просто открыть или установить в папку надстроек. Работает как обычная надстройка под правами пользователя.

+Поддерживаются все символы юникода, какие сможет отобразить Excel - это вопрос шрифтов.
Изменено: bedvit - 18.01.2024 10:33:21
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
Новая редакция BedvitXLL64v5.0b (beta)
Добавленный функционал:
+для каждой команды есть всплывающие подсказки
+хранить и шифровать можно значения (value2) или формулы (formula). Формула может содержать максимум 8 тыс. символов
+добавлены разные алгоритмы шифрования
+тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании. При расшифровки нужен только 1 пароль (повтор пароля нужен только для шифрования, для расшифровки достаточно одного-первого)
+шифровать можно на листе, шифровать можно сохраняемые диапазоны и шифровать можно и файл пользовательских сохранений.
+сохранять диапазон в списке диапазонов можно в зашифрованном виде или не в зашифрованном (в незашифрованном эффективнее сжимаются сохранения т.к. обрабатываются все дубликаты во всех сохранённых диапазонах, а не частично в отдельном диапазоне), но можно шифровать сам файл пользовательских настроек - эффективность сжатия сохраняется.
+есть возможность автоматически определять границы диапазона, выделяя весь лист или целый столбец или целую строку, см. usedrange
+добавлена возможность включать пользовательские сообщения и сообщения в статус-баре Excel
+ЭКСПЕРЕМЕНТАЛЬНО: добавлено автоматическое распознавание разных блоков зашифрованных диапазонов, с разными алгоритмами и их расшифровка разом (см. видео).


BedvitXLL64v5.0
Изменено: bedvit - 19.01.2024 00:06:15
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
Senaki, возможно у вас не подключена СОМ-библиотека. Работают ли другие функции?
«Бритва Оккама» или «Принцип Калашникова»?
Генерация GUID в Excel
 
Senaki, думаю у вас старая версия xll. Посмотрите какая.
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
Jack Famous, Спасибо за тест! Твоих предложений много, нужно отобрать интересные и полезные! Видео - это тема, может youtube - канал завести? :)
«Бритва Оккама» или «Принцип Калашникова»?
Шифрование данных на листе Excel и в VBA
 
Мое почтение, джентльмены!
В продолжении темы Variant Serialization and Deserialization
Сделал инструменты шифрования алгоритмами AES данных на листе Excel и в коде VBA.
Виды алгоритмов шифрования можно выбирать. В тесте работает алгоритм AES256:CBC.

Функционал:
1. Можно шифровать как отдельные значения так и диапазоны/массивы.
2. Шифровать данные можно прям на листе Excel, с дальнейшей расшифровкой нужного диапазона или всего листа.
3. Зашифрованные данные можно хранить в XLL как в виде значений (value2), так и в виде формул (formula)
4. Алгоритм шифрования AES256:CBC. Использована библиотека Crypto++
5. Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому :)
6. Зашифрованные диапазоны - независимые, т.е. можно каждый отдельный диапазон зашифровать со своим паролем, можно зашифровать диапазон дважды (для гиков :) )
7. Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк)  - используется алгоритм сжатия WinAPI:XPRESS_HUFF
8. Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов).
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)


Можем обсудить, кому интересно, подробности и, возможно, внести новый функционал, если он нужен и не реализован.

Надстройка:
BedvitXLL64v5.0
Изменено: bedvit - 19.01.2024 00:05:59
«Бритва Оккама» или «Принцип Калашникова»?
XLL хранение и выполнение VBA кода, или защита VBA кода от просмотра?
 
Цитата
PoToLoK™_LastVersion написал:
сложно было дать комментарий при таких обстоятельствах
Цитата
БМВ написал:
Как обычно , бан.
Вижу, что да вам не просто участвовать в данной теме. "Ad astra per aspera"...
БМВ, Михаил, единственного тестера в данной теме забанил, эх...
Цитата
PoToLoK™_LastVersion написал:
разработать механизм асимметричного шифрования, чтобы другу не пришлось отправлять пароль в открытом виде, но вопрос, надо ли?
Пока непонятно что это даст. Будет интерес - можно будет подумать.

Цитата
PoToLoK™_LastVersion написал:
crypto++... Никто ломать данную библу и не будет
Верно, она с открытым кодом - зашел и посмотрел, зачем её ломать?
Цитата
PoToLoK™_LastVersion написал:
Взлому будет подвержена сама логика вашего решения и думать, что данное решение не имеет способов взлома - это глупо!
Там нечего ломать, данные из формы сразу передаются в крипто-библу, не хранятся и нигде больше не используются. Код библы открыт, пожалуйста попробуйте взломать зашифрованные данные алгоритмом AES256:CBC с помощью этой библиотеки с открытым кодом. Мне интересен результат.  :-). Без знания пароля даже я - разработчик не смогу расшифровать зашифрованные данные. Кстати такой же алгоритм шифрует Excel файлы, вы знаете кому удалось взломать Excel-файл или rar-архив (не Brute force с простым паролем)? Я не знаю, и было бы интересно узнать прецедент :-)

Цитата
PoToLoK™_LastVersion написал:
будущее - не выдавайте кишки своих решений (см. Кишки XLL), а то при простом дизасемблировании очень легко наткнуться на ветку с частичной логикой вашего кода
А я ничего не скрываю, можете пользоваться подсказками:
Вот этот код, строка 824  ;)

Цитата
PoToLoK™_LastVersion написал:
К примеру, если бы я не появился на данной платформе в нужное время, то я вас уверяю, что даже вариант №1 до нового года бы не взломали на данной площадке и Вы бы предполагали, что взлом невозможен или трудно_реализуем!
Про дыры я и ранее знал, но вы меня подтолкнули к окончательному решению, за что и примите благодарность.

В итоге не используя дыры самого VBA, сам код можно хранить так же безопасно как в .rar или запароленном Excel-файле. Целесообразность будет определятся другими плюшками, которых нет в других инструментах. Если кому интересно будет обговорить эти плюшки - можем обсудить в этой же теме. Плюшка в виде выполнения кода без ввода пароля - не целесообразна в виду невозможности гарантировать конфиденциальность выполняемого VBA-кода.
Изменено: bedvit - 03.01.2024 11:55:46
«Бритва Оккама» или «Принцип Калашникова»?
XLL хранение и выполнение VBA кода, или защита VBA кода от просмотра?
 
Ну что, вскрываемся?
Цитата
PoToLoK™ написал:
По поводу GUID в 4 варианте... Я изучу матчасть ещё раз, попрактикуюсь и дам Вам знать, в случаи успеха!
ответа не было, да же в личку. Это прогнозируемо, потому как другой механизм, и в защите используется проверенная временем крипто-библа crypto++

Пароль:
Скрытый текст
«Бритва Оккама» или «Принцип Калашникова»?
Microsoft встроила Python в Excel
 
Думаю с ИИ будет так же как и с космосом, после полета Гагарина писали и планировали в 21 веке быть на луне, марсе, венере, с околоземными станциями и базами на планетах.
В итоге случилось не так, как думали. Всем стало просто не интересно и технологии не вышли на нужный уровень.
Изменено: bedvit - 20.12.2023 22:48:14
«Бритва Оккама» или «Принцип Калашникова»?
XLL хранение и выполнение VBA кода, или защита VBA кода от просмотра?
 
Цитата
PoToLoK™ написал:
Поделиться кодом для выполнения, а не для выполнения и просмотра!
Вы сами знаете, что на чистом VBA это сделать нельзя. Не знаю не одного адекватного решения, которое делает это и правильно обрабатывает разрядность, декларирование win api, события (листа, книги, приложения), классы, функции.
У меня были идеи, когда я эту тему начинал, но сейчас я решил не боротся с мельницами, ибо Microsoft заинтересованы, что бы мы этого как раз не делали, и вносят корректировки. Зачем мне с... против ветра?)
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 88 След.
Наверх