zipファイルを展開(Expand-Archiveコマンドレット)

zipファイルを展開する。(Expand-Archiveコマンドレット)

VBAを利用してzip形式のファイルを展開(解凍)するにはPowerShellのExpand-ArchiveコマンドレットをWshShellオブジェクトのRunメソッドを利用してPowerShellのコマンドを実行することでzipファイルを展開することができます。

Expand-Archiveコマンドレットのパラメータには下記のパラメータが利用できます。

パラメータ説明                
-Pathアーカイブファイルへのパスを指定。
-DestinationPath展開したファイルの保存先パスを指定。
-Forceユーザーの確認を求めずにコマンドを強制実行。
-Confirmコマンドレットを実行する前に確認を求めるプロンプトを表示。
WhatIfコマンドレットは実際には実行されずにコマンドレットが実行された場合の動作を示す。

 zipファイルを展開(解凍)

'*****************************************************************
' zipファイルの展開(解凍)
'*****************************************************************
Sub main_Unzip_PS()

    'ZIPファイルのパスを設定
    Dim sZipFile As Variant
    sZipFile = "C:\VBA\archive\ZipTest_PS.zip"
    
    '展開先の指定
    Dim sUnzipFolder  As String
    sUnzipFolder = "C:\VBA\archive_unzip\"
    
    'PowerShellコマンドの作成
    Dim sPsCmd  As String
    '設定パラメータ
    ' -Path:zipファイルのパス
    ' -DestinationPath:展開先のパス
    ' -Force:展開したファイルが既に存在している場合は上書き
    sPsCmd = "powershell -ExecutionPolicy RemoteSigned -Command " & _
             "Expand-Archive -Path " & sZipFile & " -DestinationPath " & sUnzipFolder & " -Force"
 
    'WScript.Shellオブジェクトの作成
    Dim oWSh As Object
    Set oWSh = CreateObject("WScript.Shell")
    
    'PowerShellコマンドの実行'
    Dim lRtn As Long
    lRtn = oWSh.Run(Command:=sPsCmd, WindowStyle:=0, WaitOnReturn:=True)
    
    Set oWSh = Nothing
    
    '処理結果の確認
    If lRtn > 0 Then
        MsgBox "Expand処理でエラーが発生しました。"
    Else
        MsgBox "完了"
    End If

End Sub

 ■実行結果

展開するzipファイルの中身
展開後の状態