Я пытаюсь написать макрос в Excel VBA, чтобы найти и выделить различия между двумя файлами Excel. Код показан ниже.
Option Explicit
Sub diffCheck()
Dim wbkA As Workbook
Dim wbkB As Workbook
Dim strFilePath As String
Dim varSheetA As Variant
Dim varSheetB As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long
With Application.FileDialog(msoFileDialogFilePicker) 'Selects the first file with the file manager
If .Show <> 0 Then
strFilePath = .SelectedItems(1)
Set wbkA = Workbooks.Open(Filename:=strFilePath)
End If
End With
With Application.FileDialog(msoFileDialogFilePicker)
If .Show <> 0 Then
strFilePath = .SelectedItems(1)
Set wbkB = Workbooks.Open(Filename:=strFilePath)
End If
End With
Set varSheetA = wbkA.Worksheets("Sheet1") 'setting the two sheets to compare
Set varSheetB = wbkB.Worksheets("Sheet1")
strRangeToCheck = "A1:A4" ' can be changed to compare between any ranges
Debug.Print Now
varSheetA = wbkA.Worksheets("Sheet1").Range(strRangeToCheck)
varSheetB = wbkB.Worksheets("Sheet1").Range(strRangeToCheck) ' or whatever your other sheet is.
Debug.Print Now
For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)
For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2)
If varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then
' Cells are identical.
' Do nothing.
Else
Set wbkA.Worksheets("Sheet1").Cells(CInt(iRow), CInt(iCol)).Interior.Color = RGB(255, 0, 0) 'colors the the different cell in red
End If
Next iCol
Next iRow
End Sub
Этот код работал, чтобы найти различия, но когда я добавил строку
Set wbkA.Worksheets("Sheet1").Cells(CInt(iRow), CInt(iCol)).Interior.Color = RGB(255, 0, 0)
, я получил ошибку 424 Требуется объект. Я перепробовал все способы ссылки на ячейку, но, похоже, не могу найти способ это исправить.
Я полагаю, что может быть что-то не так с тем, как я ранее ссылался на рабочие книги, но я не уверен, как это исправить.
Пожалуйста, укажите на все, что кажется неправильным или какие-либо улучшения, которые я мог бы сделать Я довольно новичок в коде VBA. Это главным образом основано на ответе, который можно найти здесь Макрос VBA для сравнения всех ячеек двух файлов Excel