VBA解析复合文档08——应用-解析Thumbs.db
时间:2022-07-23
本文章向大家介绍VBA解析复合文档08——应用-解析Thumbs.db,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在前面提到过,Thumbs.db文件也是一个复合文档,里面存储的数据流就是图片的缩略图。
找到一个有图片的文件夹,不管看没看到Thumbs.db这个文件,替换下面代码中的路径:
Private Sub Test_ParseThumbs()
Dim f As CFile
Set f = NewCFile()
f.OpenFile "C:UsersAdministratorPicturesdyhThumbs.db"
Dim cf As CCompoundFile
Set cf = New CCompoundFile
Dim ret As String
ret = cf.Parse(f)
If VBA.Len(ret) Then
Debug.Print ret
Exit Sub
End If
Dim fs() As String
fs = cf.DirsName()
Dim b() As Byte, bpic() As Byte
Dim i As Long, j As Long
For i = 0 To UBound(fs)
If fs(i) <> "Root Entry" Then
ret = cf.GetStream(fs(i), b)
If VBA.Len(ret) Then
Debug.Print ret
Exit Sub
End If
'保存
' 每一个缩略图IStream的前3个整形不是缩略图的内容,64位电脑就是24个Byte
ReDim bpic(UBound(b) - 24) As Byte
For j = 24 To UBound(b)
bpic(j - 24) = b(j)
Next
ByteToFile "C:UsersAdministratorPicturesdyhVBAParse" & fs(i) & ".jpg", bpic
End If
Next
Set cf = Nothing
Set f = Nothing
End Sub
Function ByteToFile(file_name As String, b() As Byte)
Dim iFreefile As Integer
iFreefile = VBA.FreeFile()
Open file_name For Binary As iFreefile
Put #iFreefile, 1, b
Close iFreefile
End Function
注意自己电脑的系统版本,我的电脑是64位的,所以数据流前面3个整形是3×8=24个Byte,如果是32位的,应该是3×4=12个Byte,这个不是缩略图的数据,需要跳过。
实现效果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 前端踩坑系列《二》
- Markdown语法
- 配置ssh免密登陆,并使用命令行与服务器交互
- 使用scp进行与服务器的文件交互(上传和下载)
- Python 技术篇-文件操作:本地文件重命名
- 3种方法加密Python文件
- 用两个栈实现队列
- Python+selenium 自动化-selenium自带的截图功能
- PyQt5 技巧篇-便于文字排版的等宽字体推荐,中文为英文两倍宽字体
- php List()函数及json_encode时无法转为数组的问题
- Python 技术篇-邮件发送并展示本地图片
- PHP变量传递值的方法
- Python 技术篇-邮件发送各种类型的附件
- PHP循环语句
- Markdown简易教程