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 zur Lösung dieses Problems beiträgt. Die Lösung verwendet Makrocode.

Frage: Ich verbringe täglich Zeit damit, Daten von einer Datei in eine andere zu kopieren. Es gibt zwei Dateien „Open.xls“ und „Closed.xls“ und ich möchte Daten von „Closed.xls“ über VBA-Code nach „Open.xls“ kopieren.

===

Wichtige Dinge zu wissen:

Das erste ist, dass wir den „Usedrange“ der geschlossenen Arbeitsmappe kennen sollten, d. H. „Closed.xls“ in der offenen Arbeitsmappe für z. „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, #N / A wird eingerichtet. Mit der Specialcells-Methode können Sie dann alle # N / A-Fehler löschen und die Formel in Werte ändern. Zunächst speichern wir zwei Excel-Dateien. 1) Open.xls 2) Closed.xls im Pfad „D: \ Test Ordner “Im Folgenden finden Sie eine Momentaufnahme der Arbeitsmappe„ Closed.xls “:

img1

Um Daten aus der Datei „Closed.xls“ automatisch in der Datei „Open.xls“ zu speichern, müssen Sie 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

img2

“ * Kopieren Sie den folgenden Code in ThisWorkbook (Closed.xls)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _

Cancel As Boolean)

'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment

Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address

End Sub

img3

  • Um die Daten in „Open.xls“ abzurufen, 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)

With Sheet1.Range(AreaAddress)

.FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _

"[Closed.xls]Sheet1'!RC)"

On Error Resume Next

.SpecialCells(xlCellTypeFormulas, xlErrors).Clear

On Error GoTo 0

.Value = .Value

End With

End Sub

img4

  • Kopieren Sie den folgenden Code in ThisWorkbook (Open.xls)

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

Jetzt sind alle VBA-Codes eingestellt. Alles was wir tun müssen, ist den Dateinamen „Open.xls“ zu öffnen. Es folgt der Schnappschuss der Datei „Open.xls“:

img6

Der Code ist nicht auf die Zellkopie von A1.usedrange beschränkt. Der Code wählt den Startbereich und funktioniert einwandfrei. Die Dateien stehen zum Download zur Verfügung und wir empfehlen Ihnen, es auszuprobieren.

===

Fazit: Mit VBA-Code können wir die Datenextraktionsaufgabe automatisieren, ohne die Zielarbeitsmappe zu öffnen, und wir sparen uns das manuelle Kopieren und Einfügen.

rar icon

Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie Ihren Freunden auf Facebook mit. Sie können uns auch auf Twitter und Facebook folgen.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder innovieren und für Sie verbessern können. Schreiben Sie uns an [email protected]