同じパスワードが設定されている複数のブックのパスワードをまとめて解除

同じパスワードが設定されている複数のブックのパスワードをまとめて解除する。

VBAで指定したフォルダ内にある同じパスワードが設定されている複数のブックのパスワードをまとめて解除しています。
処理中に指定外のパスワード、もしくはパスワードが設定されていないブックがあった場合は、そのファイルは無視して処理を継続させています。

実行結果はイミディエイトウィンドウに表示されるようにしています。

 ●同一のパスワードをまとめて解除

'******************************************************************
' Excelファイルのパスワード解除(同一パスワードのみ)
'******************************************************************
Sub unlockBookPassword()
    
    'フォルダの指定
    Dim sSetDir As String
    sSetDir = "C:\VBA\PassSet\"
    
    'パスワードの指定
    Dim sPass As String
    sPass = "pass123"
    
    
    'フォルダ内のブック全てにパスワードを解除
    Debug.Print unlockBookPwdInDir(sSetDir, sPass)
    MsgBox "完了"

End Sub


'******************************************************************
' 指定のパスワードが掛かっているブックのパスワードを解除
'------------------------------------------------------------------
'  第1引数:指定フォルダのパス
'  第2引数:設定されているパスワード
'------------------------------------------------------------------
'  戻り値 :実行結果
'******************************************************************
Function unlockBookPwdInDir(sDirPath As String, sPassword As String) As String
    
    Dim sRtn As String
    
    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダオブジェクトの取得
    Dim oDir As Object
    Set oDir = oFso.GetFolder(sDirPath)
    
    '表示とメッセージの制御
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    'フォルダにあるファイル一覧の取得
    Dim fFile As Object
    For Each fFile In oDir.Files
        
        'Excelファイルであれば処理(一時ファイル(~$)は処理対象外)
        If (oFso.GetExtensionName(fFile.Name) Like "xls*") And _
           (Left(fFile.Name, 2) <> "~$") Then
            
            'ファイルパス取得
            Dim sFilePath As String
            sFilePath = sDirPath & fFile.Name
            
            '対象のブックを開く
            On Error Resume Next
            Dim oWb As Object
            
            '※パスワードが掛かっているファイルを指定のパスで開く。
            Set oWb = Workbooks.Open(sFilePath, UpdateLinks:=0, password:=sPassword)
            
            '指定のパスワードが掛かっているファイルのみ処理。
            If Err.Number = 0 Then
                'パスワードに空文字を設定
                oWb.SaveAs fileName:=sFilePath, password:=""
                oWb.Close
                sRtn = sRtn & fFile.Name & " のパスワードを解除しました。" & vbCrLf
            Else
                sRtn = sRtn & fFile.Name & " は指定外のパスワード、もしくはパスワードが設定されてません。" & vbCrLf
            End If
            On Error GoTo 0
        End If
    Next
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Set oFso = Nothing
    unlockBookPwdInDir = sRtn
End Function

 ■実行結果

指定のフォルダにあるブック(02のファイルだけ予め異なるパスワードを設定済み)
指定のパスワードが設定されたブックのみパスワードを解除