How to open a file from an archive in vba without unzipping the archive

匿名 (未验证) 提交于 2019-12-03 01:12:01

问题:

I have a serie of archives : C:/archive1.zip, C:/archive2.zip, etc.

I want to extract only one file from each archive. Each archive has same structure and file can found under :

C:/archive1.zip/folderlevel1/folderlevel2/folderlevel3/Myfile.csv C:/archive2.zip/folderlevel1/folderlevel2/folderlevel3/Myfile.csv

etc.

How can I read all the file Myfile.csv in vba ?

Thanks!

回答1:

You can do it as this:

' ' UnZip 1 file from a zip file: ' Function entUnZip1File(ByVal strZipFilename, ByVal strDstDir, _   ByVal strFilename) '   Const glngcCopyHereDisplayProgressBox = 256 '   Dim intOptions, objShell, objSource, objTarget ' ' Create the required Shell objects   Set objShell = CreateObject("Shell.Application") ' ' Create a reference to the files and folders in the ZIP file   Set objSource = _     objShell.NameSpace(strZipFilename).Items.item(CStr(strFilename)) ' ' Create a reference to the target folder   Set objTarget = objShell.NameSpace(strDstDir) '   intOptions = glngcCopyHereDisplayProgressBox ' ' UnZIP the files   objTarget.CopyHere objSource, intOptions ' ' Release the objects   Set objSource = Nothing   Set objTarget = Nothing   Set objShell = Nothing '   entUnZip1File = 1 ' End Function 

And any where in your macro, call the function to extract the file into C:\temp directory or to any destination folder instead of C:\temp:

entUnZip1File "C:\archive1.zip", "C:\temp", "folderlevel1/folderlevel2/folderlevel3/Myfile.csv" 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!