zip 文件格式规定,一个zip 文件必须要包含一个end of central directory record。
一个zip 文件如果只有一个end of central directory record 就相当于一个空的zip 文件。
其中end of central directory record 的结构如下:

基于以上的认识,只需要把这个结构写入一个空白的文件中,然后另存为zip文件即可。
代码如下:
Sub QQ1722187970()
Dim arr(21) As Byte
arr(0) = &H50
arr(1) = &H4B
arr(2) = &H5
arr(3) = &H6
For i = 5 To 21
arr(i) = 0
Next i
Const adTypeBinary = 1
Const adTypeText = 2
Const adModeRead = 1
Const adModeWrite = 2
Const adModeReadWrite = 3
Const adSaveCreateOverWrite = 2
Dim oStream As Object
'创建流对象
Set oStream = CreateObject("ADODB.Stream")
With oStream
'打开流
.Open
' 设置为字节模式
.Type = adTypeBinary
'写入zip文件的特征字节数组
.Write arr
'另存为当前路径下的文件,adSaveCreateOverWrite参数表示如果存在源文件,则覆盖
.SaveToFile Excel.ThisWorkbook.Path & "\test.zip", adSaveCreateOverWrite
'关闭流对象
.Close
End With
End Sub


请问空白压缩文件生成以后,如何用VBA往里面添加文件呢
Pingback引用通告: 如何用vba在word中快速移动或选中内容区域? – 算法网 /