Compare as células de dados de dois arquivos independentes

1

Eu gostaria de comparar os valores de células de dois arquivos diferentes do Excel.

Já fiz um programa que está funcionando se estiver na mesma planilha. Agora, eu gostaria de "externo" a primeira célula. O programa deve comparar cada linha de uma coluna com a outra planilha

Sub Update_production()
    Dim i As Integer, j As Integer, refmiss As Integer, comments As String
    i = 5
    j = 15
    refmiss = 0

    Do while '[Production pallet.xlsx]September'!$A$i.Value <> ""          

        Do While Cells(j, 1).Value <> ""
            If (Cells(i, 1).Value <> Cells(j, 1).Value) Then
                j = j + 1
            Else
                Cells(j, 3).Value = Cells(j, 3).Value + Cells(i, 3).Value
                Cells(j, 4).Value = Cells(j, 4).Value + Cells(i, 4).Value
                j = j + 1
                refmiss = 1
            End If
        Loop
        If (refmiss = 0) Then
            comments = Cells(i, 1).Value
            Range("A15").Select
            ActiveCell.End(xlDown).Select
            ActiveCell.Offset(1, 0).Select
            ActiveCell.Value = comments
            ActiveCell.Offset(0, 2).Value = Cells(i, 3).Value
            ActiveCell.Offset(0, 3).Value = Cells(i, 4).Value
        End If
        refmiss = 0
        i = i + 1
        j = 15
    Loop
End Sub

Agradeço antecipadamente por sua ajuda (se for possível manter o do while, isso pode ser muito bom porque não sei quantas linhas serão nas duas planilhas)

    
por Antoine 19.09.2014 / 12:16

1 resposta

0

Você vai querer usar o application.worbook.open método .

Sub Openfilemacro()
Dim myfile As String

myfile = "Path\to\file"

Application.Workbooks.Open Filename:=myfile

End Sub

Depois, você pode fazer referência entre as pastas de trabalho para comparar, basta especificar o WB e o WS, como você já fez.

Algo parecido com isso, mas adaptado para você -

Sub Openfilemacro()
Dim myfile As String
Dim workbookA As Workbook
Dim workbookB As Workbook
myfile = "Path\to\file"
workbookA = ThisWorkbook
workbookB = Application.Workbooks.Open(Filename:=myfile)

Dim c As Range
For Each c In Workbooks(workbookA).Range("A:A")
    If c = "" Then Exit Sub
        'search workbookB for c.value
        'do stuff

Next

End Sub

Uma nota rápida - você provavelmente evitará usar as propriedades .select e activecell , pois elas podem se tornar confusas. Tente sempre fazer referência à célula real e não há necessidade de selecionar uma célula. Talvez você precise de um workbook.activate , mas em geral, é menos do que desejável precisar selecionar qualquer coisa ou fazer referência a uma célula ativa, especialmente com um for loop já.

    
por 19.09.2014 / 13:20