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■実行結果




