Мое почтение, джентльмены.
К вашему вниманию функции VariantToFile() и VariantFromFile() для работы с COM VARIANT.
Умеют:
+Сохранять данные из VARIANT в файл
+Загружать данные из файла в VARIANT
+Шифровать данные
+Сжимать/архивировать
+Обрабатывать любое количество вложений в массивах (дерево)
+Поддерживает длинные пути к файлам
Особенности:
>если вторым аргументом передаем пустую строку (полный путь к файлу) - работаем в интерактивном режиме (открываем форму, выводим ошибки в диалоге)

Тех.информация:
Сохранение в файл:
VARIANT* resultRetval = VariantToFile(VARIANT* variantIn, BSTR fileName, BSTR fileNameDefault, BSTR password, LONG algorithmCrypto, LONG algorithmCompress, LONGLONG hWndParent)
variantIn - данные в виде VARIANT для сохранения
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameDefault - полный путь по умолчанию (открыть форму сохранения в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
algorithmCrypto - fлгоритмы шифрования AES (не обязательный, по умолчанию: 1):
1 - "Без шифрования"
2 - "AES256:ECB"
3 - "AES256:CBC"
4 - "AES256:OFB"
5 - "AES256:CFB"
6 - "AES256:CBC-CTS"
7 - "AES256:CTR"
algorithmCompress - (не обязательный, по умолчанию: 4)::
1 - "Без сжатия"
2 - "WinAPI:MSZIP"
3 - "WinAPI:XPRESS"
4 - "WinAPI:XPRESS_HUFF*"
5 - "WinAPI:LZMS"
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0):.
Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.
Загрузка из файла:
VARIANT* resultRetval = VariantFromFile(VARIANT* variantOut, BSTR fileName, BSTR fileNameBasic, BSTR password, LONGLONG hWndParent)
variantOut - переменная VARIANT для получения данных из файла
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameBasic - полный путь по умолчанию (открыть форму загрузки в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0)
Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.
resultRetval = 500: Пользовательские данные из файла не удалось загрузить, создан новый файл (когда пути к fileName и fileNameBasic совпадают и файл с ошибкой). В интерактивном режиме выводится имена созданного файла и файла отмеченного как ошибочного.
resultRetval = 2148073494: Часть ключей не загрузилась из файла. В интерактивном режиме выводится список.
Скачать можно (для Excel) или (для других программ).
К вашему вниманию функции VariantToFile() и VariantFromFile() для работы с COM VARIANT.
Умеют:
+Сохранять данные из VARIANT в файл
+Загружать данные из файла в VARIANT
+Шифровать данные
+Сжимать/архивировать
+Обрабатывать любое количество вложений в массивах (дерево)
+Поддерживает длинные пути к файлам
Особенности:
>если вторым аргументом передаем пустую строку (полный путь к файлу) - работаем в интерактивном режиме (открываем форму, выводим ошибки в диалоге)
Тех.информация:
Сохранение в файл:
VARIANT* resultRetval = VariantToFile(VARIANT* variantIn, BSTR fileName, BSTR fileNameDefault, BSTR password, LONG algorithmCrypto, LONG algorithmCompress, LONGLONG hWndParent)
variantIn - данные в виде VARIANT для сохранения
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameDefault - полный путь по умолчанию (открыть форму сохранения в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
algorithmCrypto - fлгоритмы шифрования AES (не обязательный, по умолчанию: 1):
1 - "Без шифрования"
2 - "AES256:ECB"
3 - "AES256:CBC"
4 - "AES256:OFB"
5 - "AES256:CFB"
6 - "AES256:CBC-CTS"
7 - "AES256:CTR"
algorithmCompress - (не обязательный, по умолчанию: 4)::
1 - "Без сжатия"
2 - "WinAPI:MSZIP"
3 - "WinAPI:XPRESS"
4 - "WinAPI:XPRESS_HUFF*"
5 - "WinAPI:LZMS"
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0):.
Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.
Загрузка из файла:
VARIANT* resultRetval = VariantFromFile(VARIANT* variantOut, BSTR fileName, BSTR fileNameBasic, BSTR password, LONGLONG hWndParent)
variantOut - переменная VARIANT для получения данных из файла
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameBasic - полный путь по умолчанию (открыть форму загрузки в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0)
Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.
resultRetval = 500: Пользовательские данные из файла не удалось загрузить, создан новый файл (когда пути к fileName и fileNameBasic совпадают и файл с ошибкой). В интерактивном режиме выводится имена созданного файла и файла отмеченного как ошибочного.
resultRetval = 2148073494: Часть ключей не загрузилась из файла. В интерактивном режиме выводится список.
| Код |
|---|
Sub Test_VariantToFromFile()
Dim listViewSave, listViewLoad, resultVtoF, resultVfromF, aray2D
Dim aray2DHeader: ReDim aray2DHeader(1 To 2, 1 To 2)
Dim aray2DData: ReDim aray2DData(1 To 2, 1 To 3)
Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание
'сохраним массив и описания к нему (дерево свойств объекта)
listViewSave = Array("ListView309" _
, Array("Header" _
, aray2DHeader) _
, Array(Array("Data", Array(1, 2)) _
, aray2DData) _
, Array("Width" _
, Array(150, , 160)) _
, Array("ComboBox" _
, Array(Array(, 111), , Array(222)) _
, Array(111, Array("", "(", "((", "(((", "((((", "(((((")) _
, Array(222, Array("", ")", "))", ")))", "))))", ")))))")) _
) _
, Array("RC" _
, Array(Array(196, 197), , 198) _
, Array(197, "строка-бинарные данные ресурса") _
) _
)
'сохраняем в файл
'если вторым аргументом передаем пустую строку(полный путь к файлу) - работаем в интерактивном режиме (открываем форму)
resultVtoF = bVBA.VariantToFile(listViewSave, "")
If resultVtoF = 1223 Then Exit Sub 'отменено пользователем
'загружаем из файла
'если вторым аргументом передаем пустую строку(полный путь к файлу) - работаем в интерактивном режиме (открываем форму)
resultVfromF = bVBA.VariantFromFile(listViewLoad, "")
If resultVtoF = 1223 Then Exit Sub 'отменено пользователем
End Sub |
Скачать можно (для Excel) или (для других программ).
Изменено: - 28.01.2026 20:16:29
«Бритва Оккама» или «Принцип Калашникова»?