7

一連のアーカイブがあります: C:/archive1.zip、C:/archive2.zip など。

各アーカイブから 1 つのファイルのみを抽出したいと考えています。各アーカイブは同じ構造で、ファイルは次の場所にあります。

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

vba ですべてのファイル Myfile.csv を読み取るにはどうすればよいですか?

ありがとう!

4

1 に答える 1

12

次のように実行できます。

'
' 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

マクロ内の任意の場所で関数を呼び出して、C:\temp ディレクトリまたは C:\temp の代わりに任意の宛先フォルダーにファイルを抽出します。

entUnZip1File "C:\archive1.zip", "C:\temp", "folderlevel1/folderlevel2/folderlevel3/Myfile.csv"
于 2013-11-01T10:54:18.617 に答える