Не могу вызвать функцию из листа - PullRequest
0 голосов
/ 11 февраля 2019

Я нашел реализации MD5, SHA1 и т. Д., Которые я хотел бы использовать в своем рабочем листе: https://en.wikibooks.org/wiki/Visual_Basic_for_Applications/String_Hashing_in_VBA

Вызов MD5 из среды разработки работает, но из рабочего листа =MD5(A5;True)где A5 содержит TEST, я получаю ошибку #REF!.То же самое с =MD5("TEST";) и =MD5("TEST").

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вам нужно изменить имя функции с MD5 на другое.

Public Function BRGMOZ(ByVal sIn As String, Optional bB64 As Boolean = 0) As String
    'Set a reference to mscorlib 4.0 64-bit

    'Test with empty string input:
    'Hex:   d41d8cd98f00...etc
    'Base-64: 1B2M2Y8Asg...etc

    Dim oT As Object, oMD5 As Object
    Dim TextToHash() As Byte
    Dim bytes() As Byte

    Set oT = CreateObject("System.Text.UTF8Encoding")
    Set oMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")

    TextToHash = oT.Getbytes_4(sIn)
    bytes = oMD5.ComputeHash_2((TextToHash))

    If bB64 = True Then
       BRGMOZ = ConvToBase64String(bytes)
    Else
       BRGMOZ = ConvToHexString(bytes)
    End If

    Set oT = Nothing
    Set oMD5 = Nothing

End Function

А также добавить ссылку "mscorelib"

enter image description here

РЕДАКТИРОВАТЬ: Витя уже ответил, извините.

0 голосов
/ 11 февраля 2019

MD5 - это адрес ячейки в Excel.Это столбец MD и строка 5.

SHA1 также является адресом, соответствующим столбцу SHA и строке 1:

enter image description here

Youне может использовать их как имя функции.Попробуйте найти более подходящее имя, например hashMd5 или hashSha1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...