Das Extrahieren von Daten aus einer geschlossenen Datei in einer anderen Arbeitsmappe ist eine häufige Anforderung der meisten Excel-Benutzer. Sie möchten Daten aus geschlossenen Dateien abrufen oder konsolidieren; dies ist jedoch nicht möglich. Es gibt eine Problemumgehung, die hilft, dieses Problem zu lösen. Die Lösung besteht darin, Makrocode zu verwenden.
Frage: Täglich verbringe ich Zeit damit, Daten von einer Datei in eine andere zu kopieren. Es gibt zwei Dateien „Open.xls“ & „Closed.xls“ & ich möchte Daten von „Closed.xls“ per VBA-Code nach „Open.xls“ kopieren.
Wichtige Dinge, die Sie wissen sollten:
- Als erstes sollten wir den „Usedrange“ der geschlossenen Arbeitsmappe kennen, d.h. „Closed.xls“ innerhalb der geöffneten Arbeitsmappe für z.B. „Open.xls“
- Wir können die IF-Funktion in Usedrange der Arbeitsmappe "Closed.xls" in der Arbeitsmappe "Open.xls" verwenden und die Daten aus der Arbeitsmappe "Closed.xls" extrahieren
- Wenn die referenzierende Zelle leer ist, wird #N/A eingefügt. Mit der Methode specialcells können Sie dann alle #N/A-Fehler löschen und die Formel in Werte ändern
Um damit zu beginnen, speichern wir zwei Excel-Dateien 1) Open.xls 2) Closed.xls im Pfad „D:\Test Folder“
Im Folgenden sehen Sie die Momentaufnahme der Arbeitsmappe „Closed.xls“:
Um Daten automatisch aus der Datei „Closed.xls“ in die Datei „Open.xls“ zu speichern, müssen wir die folgenden Schritte ausführen, um den VB-Editor zu starten
- Klicken Sie auf die Registerkarte Entwickler
- Wählen Sie in der Gruppe Code die Option Visual Basic . aus
- Kopieren Sie den folgenden Code in ThisWorkbook (Closed.xls)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'In die UsedRange-Adresse von Sheet1 Closed.xls (diese Arbeitsmappe) einfügen' --- Kommentar Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
- Um die Daten in „Open.xls“ zu ziehen, kopieren Sie den folgenden Code in das Standardmodul
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells( 1, 1) Mit Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D: \Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" Bei Fehler Fortsetzen Weiter .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
- Kopieren Sie den folgenden Code in ThisWorkbook (Open.xls)
Private Sub Workbook_Open() Führen Sie "Importdata" aus End Sub
Jetzt sind die VBA-Codes alle eingestellt; Alles was wir tun müssen, ist den Dateinamen „Open.xls“ zu öffnen. Es folgt der Snapshot der Datei „Open.xls“:
Der Code ist nicht auf die Zellenkopie von A1.usedrange beschränkt; Der Code wählt den Startbereich aus und funktioniert einwandfrei. Die Dateien stehen zum Download bereit und wir empfehlen Ihnen, es auszuprobieren.
Abschluss: Mit VBA-Code können wir die Datenextraktionsaufgabe automatisieren, ohne die Zielarbeitsmappe zu öffnen, und wir ersparen uns das manuelle Kopieren und Einfügen.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site