2.3k Aufrufe
Gefragt in Tabellenkalkulation von

Hallo zusammen,

ich möchte zwei Arbeitsmappen, wobei diese immer gleich aufgebaut sind, miteinander vergleichen.

Hierbei gibt es immer eine Master-Mappe und eine zweite Mappe. Die zweite Mappe wird von anderen Mitarbeitern betreut und ergänz/aktualisiert. In regelmässigen Abständen soll die Master-Mappe nun mit der zweiten Mappe verglichen und aktualisiert werden. Dabei sollen allfällige Differenzen zuerst in einer Message-Box angezeigt werden, worüber man entscheiden kann, ob die Differenz in die Master-Mappe übertragen oder verworfen werden sollen.

Wie bereits erwähnt, sind die zwei Mappen identisch aufgebaut. Die zwei Mappen sollten über ein Menü geöffnet werden können. Der Abgleich der Daten muss nicht über die gesamte Mappe sondern nur über zwei Blätter ("Stammdaten" + "Kunden") erfolgen.

Ich habe eine ähnliche Aufgabenstellung gefunden, bin jedoch überfordert mit VBA.

http://supportnet.de/forum/2486994/zwei-excel-dateien-synchronisieren-makro-vba

Leider funktionierte es auch mit "Arbeitsmappe zusammenführen und vergleichen" nicht, da die Files bereits Makros implementiert haben und diese mit der Funktion nicht mehr oder nur noch eingeschränkt funktionieren.

Kann mir jemand weiterhelfen? ich bin dankbar für jeden Tipp.

Gruss Andreas

17 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

dass der Code über ein Menü aufgerufen wird, dürfte nicht zu dem Fehler führen.

Gibt es denn in der Masterdatei ein Tabellenblatt mit den Namen "Daten" (ich habe mich da an deiner Beispieldatei orientiert)?. In der Masterdatei habe ich keine Prüfung eingebaut, ob es ein Tabellenblatt mit dem Namen "Daten" gibt. Ansonsten musst du den Namen anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

das Tabellenblatt "Daten" gibt es. Beim Ausführen vom Makro ist es jedoch nicht aktiv, sondern ein anderes Blatt.

ich habe schon versucht, das Tabellenblatt zuerst  zu aktivieren -> Worksheets("Daten).Activate

Aber auch hiermit kam der gleiche Fehler.

Gruss Andreas
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Andreas,

aus welchem Blatt das Makro gestartet wird, dürfte nichts ausmachen. Bei meiner Testmappe funktioniert das Makro ohne Probleme.

Auch hier muss der Code in einer Zeile stehen:

If lngLZeile1 > ThisWorkbook.Worksheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row Then lngZeile1 = ThisWorkbook.Worksheets("Daten").Cells(Rows.Count, 1).End(xlUp).Row

und

If lngLSpalte1 < ThisWorkbook.Worksheets("Daten").Cells(2, Columns.Count).End(xlToLeft).Column Then lngSpalte1 = ThisWorkbook.Worksheets("Daten").Cells(2, Columns.Count).End(xlToLeft).Column

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

habe auch nochmals zwei Testfiles erstellt und hier funktioniert es einwandfrei.

ich kann mir das nicht erklären. Werde es nochmals anschauen und mich im Notfall nochmals melden.

Jedoch vielen herzlichen Dank für deine prompte Hilfe. Einfach super.

Gruss Andreas
0 Punkte
Beantwortet von
Hallo zusammen,

wir haben das Problem gelöst. Am Anfang musste wir nur "Set masterwb = ActiveWorkbook.name" setzen.

Nun haben wir jedoch festgestellt, dass 0-Werte als leer interpretiert werden und bei einem Abgleich nicht

in das Masterfile kopiert werden. Mir ist diese Problematik mit Null und leer bekannt, hoffe trotzdem, dass mir

hierbei jemand eine Lösung anbieten kann. Ziel ist, dass auch 0-Werte kopiert werden. Diese Information ist uns wichtig, da wir wissen müssen, ob die Zelle noch nicht befüllt wurde (Zelle leer -> Wert ausstehend) oder wirklich 0 (Null) ist.

Vielen Dank im Voraus für eure Hilfe.

Gruss

Andreas
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Andreas,

ersetze die Zeile

If arrMDaten(z, s) <> arrDaten(z, s) Then

durch

If StrComp(arrMDaten(z, s), arrDaten(z, s), 1) <> 0 Then

und

If arrMZusatzdaten(z, s) <> arrZusatzdaten(z, s) Then

durch

If StrComp(arrMZusatzdaten(z, s), arrZusatzdaten(z, s), 1) <> 0 Then

Teste mal, ob das dann so klappt, wie ihr euch das vorstellt.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.

Funktioniert einwandfrei. Super, danke Dir.

Gruss Andreas
...