【发布时间】:2015-03-11 13:38:24
【问题描述】:
我已经按照帖子中的建议实现了哈希方法:
这是我的实现:
Public Function BASE64SHA1(ByVal sTextToHash As String)
Dim asc As Object
Dim enc As Object
Dim TextToHash() As Byte
Dim SharedSecretKey() As Byte
Dim bytes() As Byte
Set asc = CreateObject("System.Text.UTF8Encoding")
Set enc = CreateObject("System.Security.Cryptography.HMACSHA1")
TextToHash = asc.GetBytes_4(sTextToHash)
SharedSecretKey = asc.GetBytes_4(sTextToHash)
enc.Key = SharedSecretKey
bytes = enc.ComputeHash_2((TextToHash))
BASE64SHA1 = EncodeBase64(bytes)
Set asc = Nothing
Set enc = Nothing
End Function
Private Function EncodeBase64(ByRef arrData() As Byte) As String
Dim objXML As Object
Dim objNode As Object
Set objXML = CreateObject("MSXML2.DOMDocument")
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.TEXT
Set objNode = Nothing
Set objXML = Nothing
End Function
一切运行良好,在 excel 2013(葡萄牙语)、windows 8.1(葡萄牙语)和 windows 7 下运行。
虽然,当我开始使用其他使用相同 Excel 2013(葡萄牙语)但 Windows 8.1(英文版)的计算机时,不知道为什么以及是否是这个原因,但它出现了错误并且调试器突出显示在 BASE64SHA1 函数的第一行,变量声明之后:
Set asc = CreateObject("System.Text.UTF8Encoding")
错误:
运行时错误 -2146232576 (80131700)
我检查了错误消息并提供了以下详细信息:
err.Source - VBAProject
err.HelpContext - 1000440
err.HelpFile - C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA7.1\1046\VbLR6.chm
err.LastDllError - 0
有人遇到同样的问题吗?或者可以帮助吗?看起来我缺少参考或其他东西......但我声明为 Object 并且它在其他 PC 中运行良好......帮助! =(
非常感谢!
【问题讨论】:
-
如果没有看到您的代码,我们将无法帮助您。
-
嗨 RubberDuck,它与链接中的内容大致相同,但我会在实施时发布它。谢谢!
-
抛出错误时调试器会高亮显示哪一行?
-
嗨 Degustaf,在声明 BASE64SHA1 函数后第一行的错误亮点 >>> 设置 asc = CreateObject("System.Text.UTF8Encoding")。感谢您查看此内容。
-
@JohnGreen 听起来该用户的 dll 丢失/损坏。根据 MSDN,该类应该是 mscorlib.dll 的一部分
标签: excel excel-2013 vba