21 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Tag,

ich soll einen Tabellen abgleich mit VBA programmieren und könnte etwas Hilfe gebrauchen.

Es gibt 8 Tabellenblätter. Diese acht Tabellenblätter werden in wöchentlichen Abständen neu verschickt (an mich). Hierbei sind einige Einträge teilweise unterschiedlich. Die Anzahl der Zeilen muss allerdings nicht gleich der  der bisherigen Tabelle sein, wenn zum Beispiel nur einige Einträge verändert wurden.

Jetzt gibt es eine Masterdatei, da sind diese acht Tabellen gespeichert.

Hier soll nun markiert werden, an welchen Stellen Unterschiede zu den neu erhaltenen Tabellen besteht.

 In der ersten Spalte einer jeden Tabelle ist ein Schlüssel für jede Zeile vorhanden über die man die Zeilen eindeutig suchen/ansprechen kann.

Ich hoffe auf baldige Hilfe

5 Antworten

0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)

Hallo,

du schreibst:

ich soll einen Tabellen abgleich mit VBA programmieren und könnte etwas Hilfe gebrauchen.

Hast du Erfahrung mit VBA? Und welche Hilfe brauchst du denn? Hast du schon einen Code?

Gruß

M.O.

0 Punkte
Beantwortet von
Erstmal danke für die Antwort.

Ich beschäftige mich seit ein paar Tagen mit VBA. Knackpunkt ist bei mir die Stelle, an der mehrere Arbeitsmappen ins Spiel kommen. Ich weis nicht, wie ich generell Operationen mit zwei Arbeitsmappen durchführen kann. Das wäre schon einmal eine große Hilfe.

Ein weiteres Problem ist dann der Vergleich der Zeilen, aber ich denke das würde ich hinbekommen, man hat ja einen Schlüssel gegeben mit dem man vergleichen kann.

nein Code habe ich noch nicht.

Gruß zurück
0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)

Hallo,

wenn du erst mit VBA angefangen hast, dann hast du aber für einen Anfänger ein sehr anspruchvolles Projekt bekommen.

Hier mal ein Beispiel, wie man mit verschiedenen Arbeitsmappen ansprechen kann (der Code gehört in ein Standard-Modul deiner Master-Arbeitsmappe):

Sub beispiel()

Dim wkbMaster As Workbook
Dim wkbUpdate As Workbook

'Masterarbeitsmappe der Variablen zuweisen
Set wkbMaster = ThisWorkbook

'Excel-Datei öffnen
Workbooks.Open Filename:="C:\Test\Quelldatei2.xlsx"

'geöffnete Datei der Variablen für Vergleichsdatei zuweisen
Set wkbUpdate = ActiveWorkbook

'Aus 1. Arbeitsblatt der geöffneten den Inhalt der Zelle A1 in die Mastertabelle, 1. Tabellenblatt, Zelle A kopieren
wkbMaster.Worksheets(1).Range("A1") = wkbUpdate.Worksheets(1).Range("A1").Value

'geöffnete Arbeitsmappe wieder schließen, ohne Speicherung von eventuellen Änderunge
wkbUpdate.Close (False)

'Variable für geöffnete Arbeitsmappe leere
Set wkbUpdate = Nothing

End Sub

Das muss bei dir natürlich ggf. mit einer Schleife gemacht werden, falls die 8 Tabellenblätter, die du oben erwähnt hast, in einzelnen Mappen vorliegen.

Ich rate dir, bevor du anfängst, dir genau zu überlegen, was das Makro können soll.

Kann es z.B. sein, dass in den wöchentlichen Dateien Datensätze vorhanden sind, die in der Masterdatei nicht vorhanden sind? Was soll dann passieren?

Wie sollen die wöchentlichen Dateien geöffnet werden? Das hängt natürlich auch davon ab, ob diese einen festen Namen haben oder (allein) in einem festen Verzeichnis liegen.

Gruß

M.O.

0 Punkte
Beantwortet von
Muss man das mit ActiveWorkbook machen?  Ich habe es bisher so gemacht:

Set wkbUpdate = Workbooks.Open("........", ReadOnly:=True)

Danke du hast mir aufjedenfall schonmal weitergeholfen :)

Gruß

T.S
0 Punkte
Beantwortet von m-o Profi (15.2k Punkte)

Hallo,

nein, man muss das nicht mit ActiveWorkbook machen. Wie du siehst gibt es verschiedene Möglichkeiten, verschiedene Workbooks anzusprechen.wink

Gruß

M.O.

...