如何用vba创建一个空白的zip压缩文件?

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
       

发表评论