Попытка выделить разницу между файлами Excel с помощью VBA - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь написать макрос в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...