Excel planilha vba compara duas planilhas emite relatorio

Seg, 28 de Fevereiro de 2011 10:15 Expedito Marcondes
Imprimir

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) 

Tags:
Última atualização em Qua, 10 de Agosto de 2011 08:22