ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7789|回复: 13

VBA获取文件MD5值

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-5-27 23:23 | 显示全部楼层 |阅读模式
各位大师好.我想写一个VBA,要求:把一个文件夹中的文件的文件名放到A列,MD5值放到B列.这个代码要怎么写啊!


获取文件的MD5值我都不知道从何下手了!

TA的精华主题

TA的得分主题

发表于 2011-5-29 07:05 | 显示全部楼层

〖Excel Home友情提示〗

   

很遗憾通知楼上朋友,您的帖子在24小时之内没有任何回复!

通常情况下,本论坛发布的主题帖会在8小时被回复或处理。您的帖子在24小时之内未被回复,其中的原因可能是

1、问题表述不清、模棱两可,难以理解,帮助者被搞晕了,夺帖而出;
2、没有上传必要的附件,或附件被遗忘在某个角落;
3、发帖提问时,语气带棱角、带挑衅,不幸被列入不受欢迎的帖子;
4、所提问题不成立,或提不合理的要求,乐于助人者使出“走为上”之计;
5、话题较偏、较冷或者发布到了不合适的版块,暂时无人问津,顾影自怜。


为了提高您的问题解决效率,我们推荐您阅读以下文章:
* 如何发表新话题和上传附件:http://club.excelhome.net/thread-45649-1-1.html
* 发帖的技巧:http://club.excelhome.net/thread-176339-1-1.html
* EH技术论坛的最佳学习方法:http://club.excelhome.net/thread-117862-1-1.html

TA的精华主题

TA的得分主题

发表于 2011-5-29 09:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
网上找的VB代码
  1. Option Explicit
  2. Option Base 0

  3. Public Type MD5_CTX
  4.     i(1) As Long
  5.     buf(3) As Long
  6.     inc(63) As Byte
  7.     digest(15) As Byte
  8. End Type

  9. Public Declare Sub MD5Init Lib "Cryptdll.dll" (ByVal pContex As Long)
  10. Public Declare Sub MD5Final Lib "Cryptdll.dll" (ByVal pContex As Long)
  11. Public Declare Sub MD5Update Lib "Cryptdll.dll" (ByVal pContex As Long, ByVal lPtr As Long, ByVal nSize As Long)

  12. Public Function ConvBytesToBinaryString(bytesIn() As Byte) As String
  13.     Dim i As Long
  14.     Dim nSize As Long
  15.     Dim strRet As String
  16.    
  17.     nSize = UBound(bytesIn)
  18.     For i = 0 To nSize
  19.          strRet = strRet & Right$("0" & Hex(bytesIn(i)), 2)
  20.     Next
  21.     ConvBytesToBinaryString = strRet
  22. End Function

  23. Public Function GetMD5Hash(bytesIn() As Byte) As Byte()
  24.     Dim ctx As MD5_CTX
  25.     Dim nSize As Long
  26.    
  27.     nSize = UBound(bytesIn) + 1
  28.    
  29.     MD5Init VarPtr(ctx)
  30.     MD5Update ByVal VarPtr(ctx), ByVal VarPtr(bytesIn(0)), nSize
  31.     MD5Final VarPtr(ctx)
  32.    
  33.     GetMD5Hash = ctx.digest
  34. End Function

  35. Public Function GetMD5Hash_Bytes(bytesIn() As Byte) As String
  36.     GetMD5Hash_Bytes = ConvBytesToBinaryString(GetMD5Hash(bytesIn))
  37. End Function

  38. Public Function GetMD5Hash_String(ByVal strIn As String) As String
  39.     GetMD5Hash_String = GetMD5Hash_Bytes(StrConv(strIn, vbFromUnicode))
  40. End Function

  41. Public Function GetMD5Hash_File(ByVal strFile As String) As String
  42.     Dim lFile As Long
  43.     Dim bytes() As Byte
  44.     Dim lSize As Long
  45.    
  46.     lSize = FileLen(strFile)
  47.     If (lSize) Then
  48.         lFile = FreeFile
  49.         ReDim bytes(lSize - 1)
  50.         Open strFile For Binary As lFile
  51.         Get lFile, , bytes
  52.         Close lFile
  53.         GetMD5Hash_File = GetMD5Hash_Bytes(bytes)
  54.     End If
  55. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-29 14:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
太感谢了!我好好学习这一段代码

TA的精华主题

TA的得分主题

发表于 2017-8-17 12:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-4-4 20:25 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-4-18 13:12 | 显示全部楼层
win11 office365 64位,报错了,MD5Init VarPtr(ctx) 这行,varptr这里。字符串hash在windows下比linux下费劲多了,vba有没有10行以内能解决的方法?
vba md5报错.png

TA的精华主题

TA的得分主题

发表于 2024-12-15 10:37 | 显示全部楼层
刚刚遇到了和楼上一样的问题,目前还不会解决,等我查查国外是怎么弄的,有方案了再回贴。

TA的精华主题

TA的得分主题

发表于 2024-12-15 14:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
VBA生成MD5的函数.rar (2.61 KB, 下载次数: 19)

TA的精华主题

TA的得分主题

发表于 2024-12-16 16:03 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:36 , Processed in 0.043548 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表