VBA100本ノック 23本目:シート構成の一致確認

こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。

上記リンク先から、問題文を転載。
f:id:Infoment:20220224232745p:plain

シート名のみ、位置は不問ということなので、シート名を辞書に
登録して比較することとした。

  1. 一つ目のブックを開いて、シート名で辞書を作成。
  2. 二つ目のブックを開いて、各シートと辞書を比較。
    シート名が辞書にあるなら、辞書からシート名を除去する。
    シート名が辞書にないなら、その時点で不一致確定。
  3. 二つ目のブックのシート名を一通り確認して、辞書が空になれば一致。
    何か余っていれば、不一致。

ということで、作成したのがこちら。

Sub VBA_100Knock_023()
    Dim Dict As Scripting.Dictionary
    Set Dict = New Scripting.Dictionary
    Dim FilePath(1) As String
        FilePath(0) = ThisWorkbook.Path & "\Book_20201101.xlsx"
        FilePath(1) = ThisWorkbook.Path & "\Book_20201102.xlsx"

    Dim Wb(1) As Workbook
    Set Wb(0) = Workbooks.Open(FilePath(0), False, True)
    Set Wb(1) = Workbooks.Open(FilePath(1), False, True)
    
    Dim Ws As Worksheet
        For Each Ws In Wb(0).Worksheets
            ' ありなし確認のための辞書なので、Item不問。
            ' 今回はTrueとした(何でも良い)。
            Dict(Ws.Name) = True
        Next
        Wb(0).Close False
        
        For Each Ws In Wb(1).Worksheets
            If Dict.Exists(Ws.Name) Then
                Dict.Remove Ws.Name
            Else
                Wb(1).Close False
                MsgBox "不一致"
                Exit Sub
            End If
        Next
        
        If Dict.Count = 0 Then
            MsgBox "一致"
        Else
            MsgBox "不一致"
        End If
        
        Wb(1).Close False
End Sub

※冒頭リンク先の解答例および解説も、ぜひご一読ください。

参考まで。