VBA Skript um Daten von einer Excel-Datei in eine andere zu kopieren?
Hallo,
ich habe zwei Excel Dateien. Mit Adressdaten. Das VBA-Skript soll die erste Excel-Datei Zeile für Zeile iterieren und in der zweiten Excel-Datei nach Adressen suchen die gleich sind.
Wird in der zweiten Datei die Adresse aus der ersten Datei gefunden, soll ein weiterer Wert von der zweiten Datei in die erste Datei rüber kopiert werden.
Wichtig wäre mir dabei, dass das Skript in der ersten Excel-Mappe ausgeführt wird, und dass die zweite Excel-Datei gar nicht erst geöffnet wird.
Ich habe schon sehr viel programmiert - aber bisher noch nie etwas in VBA. (und ich komme mit VBA nicht so ganz klar)
Daher wollte ich fragen, ob hier jemand ein Skript hat oder kennt, das etwas ähnliches macht, so dass ich es mir ein bisschen abgucken kann. (Prinzipiell ist das ja ein Problem, das sicherlich häufiger auftritt)
3 Antworten
Wenn Du wenig / keine Erfahrung mit VBA hast: Wäre es evtl. besser handhabbar, wenn Du einfach einen SVERWEIS in der ersten Datei verwendest und das Ergebnis dann kopierst und als Werte einfügst?
Der Haken an einer VBA Lösung ist, dass Du künftige Änderungen im Zweifel nicht selbst machen kannst.
auf die Schnelle, wobei das sicherlich eleganter geht, ich hab auch nicht wirklich das Öffnen im Hintergrund, sondern öffnen / schließen der Quelldatei verwendet:
Sub abgleich()
Application.ScreenUpdating = False
Dim quelle As Workbook
Workbooks.Open "c:\users\hugo\desktop\quelle.xlsx"
Set quelle = ActiveWorkbook
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'die genutzten Zeilen in Spalte A der Zieldatei, d.h. Datei mit Makro durchgehen. Die 1 anpassen, wenn nicht in Spalte A gesucht werden soll.
On Error Resume Next 'wenn der sverweis nix findet, kommt sonst ein Abbruch
Cells(i, 2).Value = WorksheetFunction.VLookup(Cells(i, 1).Value, quelle.Sheets(1).Range("A1:B100"), 2, 0) 'vlookup = sverweis. Gesucht wird der Eintrag aus Spalte A der Datei mit Makro. Suchbereich ist A1:B100 in der Quelldatei -> anzupassen
Next
quelle.Close
End Sub
"... die zweite Excel-Datei gar nicht erst geöffnet wird"
das ist ja wie:
Vergleiche den Inhalt zweier geschlossener Säcke, aber mach nur einen auf.
Wie soll das gehen? Schätzen, Wahrscheinlichkeit, Raten?
Gruß aus Berlin
Das hört sich ja schon GANZ anders an.
Also: Datei zwar öffnen (um vergleichen zu können) aber nicht anzeigen.
Diejenige Tabelle, von der Du kopierst, öffne als aktive Tabelle. Die andere Datei öffne auch, sie soll aber nicht aktiv sein (notfalls setze am Anfang die Quell-Datei und die Quell-Tabelle aktiv).
Und dann der copy-Befehl
Sub c()
Cells(1.1).Copy Destination:=Workbooks("Mappe1").Worksheets("Tabelle1").Range("A1")
End Sub
ich meinte damit eben, dass sich nicht ein Excel-Fenster mit der Datei öffnen soll, sondern dass die Datei im Hintergrund gelesen werden soll.