VBA Skript um Daten von einer Excel-Datei in eine andere zu kopieren?

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.

Ninombre  03.05.2017, 10:45

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
0

"... 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

Woher ich das weiß:Hobby – Jahrelanges programmieren.
kurzlang 
Fragesteller
 03.05.2017, 08:54

ich meinte damit eben, dass sich nicht ein Excel-Fenster mit der Datei öffnen soll, sondern dass die Datei im Hintergrund gelesen werden soll.

0
Britzcontrol  03.05.2017, 10:28
@kurzlang

Das hört sich ja schon GANZ anders an.
Also: Datei zwar öffnen (um vergleichen zu können) aber nicht anzeigen.

0

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
Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich