【ExcelVBA】2つのファイルを比較してどのセルの値が異なっているか調べる方法

ExcelVBA

VBAを使用するとファイルを比較して、どこのセルが異なっているかを調べることができます。

この記事を読むことで、次の動画のようなことができるようになります。

このように、比較対象のファイルのSheet1と異なる値のセルの背景色が赤色になります。

ではさっそくいってみましょう。

今回行うこと

2つのファイルのSheet1を比較して、異なる値のセルを赤色にします。以下の例では赤丸の部分の値が異なっています。

異なる値のセルに色を塗るプログラム

解説

ではこのプログラムを解説していきます。

まずはApplication.GetOpenFilename()でユーザに比較対象のファイルを選択させています。この関数により[ファイルを開く]ダイアログボックスが表示されます。ファイルが選択されなかった場合は処理を終了します。

GetOpenFilenameメソッド

GetOpenFilename (FileFilterFilterIndexTitleButtonTextMultiSelect)

戻り値
 選択したファイルの文字列が返されます。

 ファイルが選択されなかった場合はFalseが返されます。

Workbooks.Openにより選択されたファイルを開いています。ファイルを開いた直後にVisible=Falseを指定することによりファイルを非表示にしています。そして開いたファイルの1番目のシートを変数に入れています。

For i = 1 to 10 により、変数 i は1から10まで1ずつ増加します。
For j = 1 to 10 により、変数 j は1から10まで1ずつ増加します。
こうすることにより、ひとつずつセルを調べることができます。

そして次の部分では、作業中のエクセル(つまり前面に出ているエクセル)※今回はマクロを実行しているエクセルと最初に選択したエクセルの値を比較しています。

<>は異なっているという意味です。つまりセルの値が違う場合には25行目の処理が実行されます

セルの背景色つまりインテリアの色を赤にするという意味です。

そして最後に非表示で開いていたエクセルを閉じます。

Application.DisplayAlerts = False によって、次のメッセージを表示することなくエクセルを閉じることができます。

Application.DisplayAlerts = True とすることでメッセージの設定を元に戻しています

実行結果

では実行してみましょう!

マクロを実行しているエクセルと、最初に選択したエクセルの値が異なるセルが赤色になりました!

さいごに

いかがだったでしょうか。

今回は2つのファイルの異なる部分を調べる方法をご紹介しました。

これにより皆さんの業務が時短できることを願っています。

今後もこのようなプログラムをご紹介していきますので、よろしくお願いいたします。

コメント

タイトルとURLをコピーしました