Saberexcel - site das macros
Este exemplo de planilha contém macro do Aplicativo Microsoft Excel VBA(Visual Basic Application), que compara dados entre duas folhas de planilhas,
aqui inserí somente uma coluna em cada folha de planilha. Ao comparar os dados, o macro abrirá uma nova planilha com a relação dos ítens diferentes.
' ESTE EXEMPLO DE PLANILHA FAZ PARTE DO MÓDULO COMO FAZER PROGRAMAÇÃO MS EXCEL VBA_IV
Sub Comparar_planilha()
On Error GoTo Err: 'caso execute o macro em outro livro ativo
Compara_Planilhas Sheets("Plan1"), Sheets("Plan2")
Exit Sub
Err: MsgBox "Selecione Planilha Compara!", vbInformation, "Saberexcel"
End Sub
Sub Compara_Planilhas(Wks1 As Worksheet, Wks2 As Worksheet)
Dim vLin As Long, vCol As Integer
Dim vContaLinWk1 As Long, vContaLinWk2 As Long, vContaColWk1 As Integer, vContaColWk2 As Integer
Dim vMaxLin As Long, vMaxCol As Integer, vDados1 As String, vDados2 As String
Dim vRelatorioWB As Workbook, vContaDiferenca As Long
Application.ScreenUpdating = False
Application.StatusBar = "gerando relatório............"
Set vRelatorioWB = Workbooks.Add
Application.DisplayAlerts = False
While Worksheets.Count > 1
Worksheets(2).Delete
Wend
Application.DisplayAlerts = True
With Wks1.UsedRange
vContaLinWk1 = .Rows.Count
vContaColWk1 = .Columns.Count
End With
With Wks2.UsedRange
vContaLinWk2 = .Rows.Count
vContaColWk2 = .Columns.Count
End With
vMaxLin = vContaLinWk1
vMaxCol = vContaColWk1
If vMaxLin < vContaLinWk2 Then vMaxLin = vContaLinWk2
If vMaxCol < vContaColWk2 Then vMaxCol = vContaColWk2
vContaDiferenca = 0
For vCol = 1 To vMaxCol
Application.StatusBar = "Comparando células " & Format(vCol / vMaxCol, "0 %") & "..."
For vLin = 1 To vMaxLin
vDados1 = ""
vDados2 = ""
On Error Resume Next
vDados1 = Wks1.Cells(vLin, vCol).FormulaLocal
vDados2 = Wks2.Cells(vLin, vCol).FormulaLocal
On Error GoTo 0
If vDados1 <> vDados2 Then
vContaDiferenca = vContaDiferenca + 1
Cells(vLin, vCol).Formula = "'" & vDados1 & " <> " & vDados2
Cells(vLin, vCol + 1).Value = " diferentes"
End If
Next vLin
Next vCol
Application.StatusBar = "Formatando Relatório..."
ActiveSheet.Name = "Relatorio dados diferentes"
ActiveWindow.DisplayGridlines = False 'retirando a grade
Columns("A:D").AutoFit
'formatando a planilha que vai receber os dados.
With Range(Cells(1, 1), Cells(vMaxLin, vMaxCol))
.Interior.ColorIndex = 19
.Font.Name = "Verdana"
.Font.Size = 8
With .Borders
.LineStyle = xlContinuous
.Weight = xlHairline
End With
End With
Columns("A:IV").ColumnWidth = 15
vRelatorioWB.Saved = True
If vContaDiferenca = 0 Then
vRelatorioWB.Close False
End If
Set vRelatorioWB = Nothing
Application.StatusBar = False
Application.ScreenUpdating = True
MsgBox "Detectado(s) ...: [ " & vContaDiferenca & " ] Itens diferentes! ", vbInformation, _
"Dados comparados.: [ " & Wks1.Name & " ] com [ " & Wks2.Name & " ]"
End Sub
Aprenda tudo sobre o Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos SaberExcel
Baixe o exemplo de planilha contendo macro acima
Excel planilha vba compara planilhas e emite relatorio diferenca (33.67 KB)