Шифрование данных — важная функция безопасности, особенно при работе с конфиденциальными или секретными данными. В Excel вы можете использовать макросы для шифрования и дешифрования содержимого ячеек, чтобы защитить информацию от несанкционированного использования. В этой статье мы рассмотрим пример макроса, который позволяет шифровать и расшифровывать данные в Excel.
Макрос состоит из следующих частей:
Encrypt
: Этот макрос вызывает процедуруEncryptCellContents
для шифрования содержимого выделенного диапазона ячеек.Decrypt
: Этот макрос вызывает функциюDecryptString
для дешифрования содержимого выделенного диапазона ячеек.EncryptCellContents
: Эта процедура выполняет шифрование содержимого каждой ячейки в указанном диапазоне. Он вызывает функциюEncryptString
для шифрования каждого символа в строке.EncryptString
: Эта функция шифрует каждый символ в строке, преобразуя его в шестнадцатеричное представление и объединяя полученные значения.DecryptString
: Эта функция дешифрует строку, преобразуя каждую пару символов обратно в символы и объединяя их в исходную строку.
Ниже представлен пример макроса:
Sub Encrypt()
Dim rng As Range
Set rng = Selection
EncryptCellContents rng
End Sub
Sub Decrypt()
Dim rng As Range
Dim decryptedValue As String
Set rng = Selection
For Each cell In rng
decryptedValue = DecryptString(cell.Value)
cell.Value = decryptedValue
Next
End Sub
Sub EncryptCellContents(ByVal rng As Range)
Dim cell As Range
For Each cell In rng
Dim originalValue As String
originalValue = cell.Value
Dim encryptedValue As String
encryptedValue = EncryptString(originalValue)
cell.Value = encryptedValue
Next cell
End Sub
Function EncryptString(ByVal str As String) As String
Dim encryptedStr As String
Dim i As Integer
For i = 1 To Len(str)
Dim character As String
character = Mid(str, i, 1)
Dim encryptedChar As String
encryptedChar = Right("00" & Hex(Asc(character)), 2)
encryptedStr = encryptedStr & encryptedChar
Next i
encryptString = encryptedStr
End Function
Function DecryptString(ByVal encryptedStr As String) As String
Dim decryptedStr As String
Dim i As Integer
For i = 1 To Len(encryptedStr) Step 2
Dim encryptedChar As String
encryptedChar = Mid(encryptedStr, i, 2)
Dim character As String
character = Chr("&H" & encryptedChar)
decryptedStr = decryptedStr & character
Next i
DecryptString = decryptedStr
End Function
Макрос использует простой алгоритм шифрования и дешифрования, который преобразует каждый символ в его шестнадцатеричное представление и обратно.
Обратите внимание на то, что это пример простого шифрования и не обеспечивает высокую степень защиты данных. При необходимости шифрования конфиденциальных данных рекомендуется использовать более надежные и непроницаемые алгоритмы шифрования.