Compare two workbooks in Excel and display the differences
Created by:
Tact System Co., Ltd.
© 2018 TACT SYSTEM Co. Ltd. All Rights Reserved.
URL: https://www.tactsystem.co.jp
mailto: tactcmb2@tactsystem.co.jp
There are two versions: AppleScript and VBA.
AppleScript version
Microsoft Excel for Mac 2011
Place this script in Users/[user name]/Documents/Microsoft User Data/Excel Script Menu Items.
Microsoft Excel for Mac 2016
Place this script in Users/[user name]/Library/Scripts/Applications/Excel/.
* With Excel active, select “Open Scripts Folder” -> “Open Excel Scripts Folder” from the script menu to access.

How to use
With the two Excel documents you want to compare open, select Compare Two Sheets from the script menu.
VBA version
Installation
Since this is an Excel Macro-Enabled Workbook, place the workbook anywhere you like.
How to Use
With the two Excel documents you want to compare open, run CompareTwoSheets from the macro.
Alternatively, click on this yellow shape.
Specifications
Microsoft Excel is operated using a macro (VBA).
If there are not two or more workbooks open, an alert dialog will appear and the program will end.
Compares the active sheets of two open workbooks, counting from the beginning.
The range of cells in the sheet is the range used in the worksheet.
The two sheets are copied to a new workbook.
Sets conditional formatting to check whether the values of cells with the same address in each of the two sheets match.
If the cell values are different, dark red text, light red background will be applied.
The original workbook will not be changed.
Operating environment
Recommended operating environment: OS X Mavericks (10.9.5) / Windows
Target application: Microsoft Excel 2011 or later
VBA macro
Sub CompareTwoSheets()
Dim WorkbookCount As Long
WorkbookCount = Workbooks.Count
If WorkbookCount <= 2 Then
MsgBox "open 2 workbooks.", vbCritical
Exit Sub
End If
Dim bookNames(1 To 3) As String
Dim n As Long
n = 1
For Each Wb In Workbooks
If Wb.Name <> ThisWorkbook.Name Then
bookNames(n) = Wb.Name
n = n + 1
End If
If n >= 3 Then
Exit For
End If
Next Wb
Workbooks(bookNames(1)).ActiveSheet.Copy
bookNames(3) = ActiveWorkbook.Name
Dim cellStartAddress1 As String
cellStartAddress1 = Workbooks(bookNames(3)).Worksheets(1).UsedRange.cellS(1).Address(False, False, xlA1, True)
Workbooks(bookNames(2)).ActiveSheet.Copy after:=Workbooks(bookNames(3)).Worksheets(1)
Dim cellStartAddress2 As String
cellStartAddress2 = Workbooks(bookNames(3)).Worksheets(2).UsedRange.cellS(1).Address(False, False, xlA1, True)
With Workbooks(bookNames(3)).Worksheets(2)
.Activate
With .UsedRange
.cellS.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=" + cellStartAddress1 + "<>" + cellStartAddress2
With .FormatConditions(1)
.SetFirstPriority
.Font.Color = RGB(156, 0, 6)
.Interior.Color = RGB(255, 199, 206)
.StopIfTrue = False
End With
End With
End With
End Sub
Click here to download the script.

