VBA100本ノック 23本目:シート構成の一致確認
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
シート名のみ、位置は不問ということなので、シート名を辞書に
登録して比較することとした。
- 一つ目のブックを開いて、シート名で辞書を作成。
- 二つ目のブックを開いて、各シートと辞書を比較。
シート名が辞書にあるなら、辞書からシート名を除去する。
シート名が辞書にないなら、その時点で不一致確定。 - 二つ目のブックのシート名を一通り確認して、辞書が空になれば一致。
何か余っていれば、不一致。
ということで、作成したのがこちら。
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
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。