2016-10-26 3 views
1

私は2 Excelブックを比較するマクロを作成しようとしているし、違いを強調表示します。私は以前のソリューションを見てきましたが、多くの助けになりましたが、このマクロを実行することはできません。私は2つのスクリプトを作成して、どちらが最適かを確認しました。2 Excelブックを比較し、違いを強調表示

1.

Sub CompareWorkbooks() 

Dim varSheetA As Variant 
Dim varSheetB As Variant 
Dim strRangeToCheck As String 
Dim iRow As Long 
Dim iCol As Long 

strRangeToCheck = "A1:AK900" 

'Get worksheets from the workbooks 
Set wbkN = Workbooks.Open(Filename:="U:\gebouwensep.xlsx") 
Set Nieuweversie = wbkN.Worksheets("gebouwen") 


Set wbkO = Workbooks.Open(Filename:="U:\gebouwenaug.xlsx") 
Set Oudeversie = wbkO.Worksheets("gebouwen") 

If Nieuweversie <> Oudeversie Then 
    Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 
End If 

End Sub 

Sub CompareWorkbooks() 

Dim varSheetA As Variant 
Dim varSheetB As Variant 
Dim strRangeToCheck As String 
Dim iRow As Long 
Dim iCol As Long 
Dim mycell As Range 
Dim mydiffs As Integer 

Nlin = 1 
Ncol = 1 

'get worksheets from the workbooks 
Set wbkA = Workbooks.Open(Filename:="U:\gebouwensep.xlsx") 
Set varSheetA = wbkA.Worksheets("gebouwen") 

Set wbkB = Workbooks.Open(Filename:="U:\gebouwenaug.xlsx") 
Set varSheetB = wbkB.Worksheets("gebouwen") 

strRangeToCheck = "A1:AK900" 

varSheetA = varSheetA.Range(strRangeToCheck) 
varSheetB = varSheetB.Range(strRangeToCheck) 

For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1) 
    For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2) 
     If Not varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then 

     Else 
       Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 
     End If 
    Next iCol 
Next iRow 

End Sub 

答えて

0

私のソリューションは、あなたの主な問題は、次の行のように見えるコードを2

です:

Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 

"Nieuweversie"または "gebouwen"に変数が設定されていません。私はこのソリューションを自分でテストしてみた

wbkA.Sheets("gebouwen").Cells(iRow, iCol).Interior.Color = vbYellow 

、固定ことが表示されます:旧表示されますが、コード1から残っコード2の残りであることを、私はあなたが実際にあることを、このラインを必要とするものと仮定していることですワークシート参照によってサブが正しく実行される

- これはコード1では同じ行のため動作しません(ただし、残りのコードはチェックしていませんが、その他の問題がある可能性があります)。あなたの変数 "Nieuwerversie"はワークシートであり、あなたがしているのは有効な参照ではない "Worksheet.Sheets"オブジェクトです。あなただけ

Nieuweversie.Cells(iRow, iCol).Interior.Color = vbYellow 

を使用した場合は、私が言うように、私はコード

+0

の残りの部分をテストしていませんが、その後これは、コード1で同じ行を修正する必要がありますあなたの助けをありがとう!これは問題を解決します:) – user7074164

関連する問題