Hallo
Ich bräuchte etwas hilfe bei meinem code
Es geht um den Vergleich zweier Exeldateien, die jeweis in Spalte A:A mit bliebig Daten gefüllt sind.
Jetzt will ich mit einem Makro durch einen butten zwei Dateien auswählen und diese dann inhltlich vergleichen lassen, aber nicht durch einfachen Zelle vergleich.
Ich denke am besten wäre es die Dateien im dictionary als Objekt zu speichern, habe aber noch keine Erfahrung damit.
Beispiel:
Datei 1
Spalte 1
1
2
3
100RB1MA1
100RB2BGE19
100RB2BGE101
100RB2BGE102
100RB2MA1
100IS1KFA1
102FX1BGE103
102FX1KK1
102FX1KK1B
102FX1KKP1
102HT1BGE103
102FX1BGE105
102FX1BP1
102HT1BGE105
102HT1BGE130
102HT1BGE131
102HT1BGE150
102HT1BGE151
102HT1BGG1
Datei 2
6
7
8
100RB1MA1
100RB2BGE19
100RB2BGE101
100RB2BGE102
100RB2MA1
100IS1KFA1
102FX1BGE103
102FX1KK1
102FX1KK1B
102HT1BGE103
102FX1BGE105
102FX1BP1
102HT1BGE105
102HT1BGE130
102FX1KKP1
102HT1BGE131
102HT1BGE150
102HT1BGE151
102HT1BGG1
Option Explicit
Dim sDateiName1 As String
Dim sDateiName2 As String
Dim bDateiNum1 As Byte
Dim bDateiNum2 As Byte
Private Sub CommandButton1_Click()
Call GetOpen_FileName
'Call Vergleich_Arbeitsmappen
End Sub
Private Sub GetOpen_FileName()
Dim sPfadName1 As Variant
Dim sPfadName2 As Variant
Dim i As Integer
Dim n As Long
Dim x As Long
Dim lName1 As Long
Dim lName2 As Long
Dim iWorkbook As Integer
Dim wb1 As Workbook
Dim wb2 As Workbook
MsgBox "Wählen Sie die beiden Exceltabellen die Verglichen werden sollen.", vbQuestion & vbOKOnly, "Info"
ChDrive "T"
ChDir "T:\delme\Ruckes\Vergleich"
sPfadName1 = Application.GetOpenFilename("Excel-Dateien (*.xl??), *.xl??", Title:="Bitte Exceldatei auswählen")
'Extraktion des Mappennamen
If Not sPfadName1 = False Then
Workbooks.Open sPfadName1
sPfadName1 = Mid$(sPfadName1, InStrRev(sPfadName1, "\") + 1)
x = (InStrRev(CStr(sPfadName1), ".") - 1)
lName1 = Len(sPfadName1) - (Len(sPfadName1) - x)
sDateiName1 = Left(sPfadName1, lName1)
'MsgBox (sDateiName1)
Else
Exit Sub
End If
sPfadName2 = Application.GetOpenFilename("Excel-Dateien (*.xl??), *.xl??", Title:="Bitte die Vergleichsdatei auswählen")
If Not sPfadName2 = False Then
Workbooks.Open sPfadName2
sPfadName2 = Mid$(sPfadName2, InStrRev(sPfadName2, "\") + 1)
i = (InStrRev(CStr(sPfadName2), ".") - 1)
lName2 = Len(sPfadName2) - (Len(sPfadName2) - i)
sDateiName2 = Left(sPfadName2, lName2)
'MsgBox (sDateiName2)
Else
Exit Sub
End If
Set wb1 = Workbooks(sDateiName1)
Set wb2 = Workbooks(sDateiName2)
For iWorkbook = 1 To Workbooks.Count
If Workbooks(iWorkbook).Name = wb1.Name Then
bDateiNum1 = iWorkbook
End If
If Workbooks(iWorkbook).Name = wb2.Name Then
bDateiNum2 = iWorkbook
End If
Next iWorkbook
End Sub
Private Sub Vergleich_Arbeitsmappen()
'Vergleich von Mappe X mit Mappe Y
Dim intWB As Integer, intWS As Integer
Dim objDic As Object
Dim regObj As Range
Set objDic = CreateObject("scripting.dictionary")
'Vergleich Anzahl der Tabellenblätter
If Workbooks(sDateiName1).Worksheets.Count <> Workbooks(sDateiName2).Worksheets.Count Then
MsgBox "Die Anzahl der Tabellenblätter ist unterschiedlich!"
End If
'Vergleich der benutzen Zellen
For intWS = 1 To Workbooks(sDateiName1).Worksheets.Count
If Workbooks(sDateiName1).Worksheets(intWS).UsedRange.Cells.Count <> Workbooks(sDateiName2).Worksheets(intWS).UsedRange.Cells.Count Then
MsgBox "Die Anzahl der benutzen Zellen in Blatt " & intWS & " " & "ist unterschiedlich!"
End If
'Vergleich der Zellinhalte
For Each regObj In Workbooks(sDateiName1).Worksheets(intWS).UsedRange
If Not regObj = "" Then
If regObj.Value <> Workbooks(sDateiName2).Worksheets(intWS).Range(regObj.Address).Value Then
For intWB = bDateiNum1 To bDateiNum2
Workbooks(intWB).Worksheets(intWS).Activate
ActiveSheet.Range(regObj.Address).Interior.ColorIndex = 3
Next
Else
For intWB = bDateiNum1 To bDateiNum2
Workbooks(intWB).Worksheets(intWS).Activate
ActiveSheet.Range(regObj.Address).Interior.ColorIndex = 4
Next
End If
End If
Next
Next
End Sub
|