Das Problem: Ich versuche, Daten von einer Arbeitsmappe in eine andere zu kopieren.Fehler beim Versuch, Daten aus einer externen Arbeitsmappe mit mehreren Arbeitsblättern in eine andere Arbeitsmappe zu kopieren
Nehmen wir an, ich habe eine Arbeitsmappe (genannt DATA) mit mehreren Arbeitsblättern mit Daten gefüllt. Jede Datenspalte hat eine eindeutige Überschrift (alle Überschriften in derselben Zeile).
Auf der anderen Seite habe ich eine andere Arbeitsmappe (namens REPORT) mit einem Arbeitsblatt, das nur die Überschrift der Daten (in einer Zeile) enthält. Sie sind nicht in derselben Reihenfolge wie in der Arbeitsmappe DATA. Zum Beispiel habe ich 3 Überschriften in REPORT Arbeitsblatt, die in verschiedenen Arbeitsblättern in der Arbeitsmappe DATA gefunden werden können.
Ich muss alle Arbeitsblätter in der Arbeitsmappe DATA durchlaufen und kopieren Sie die gesamte Spalte in das Arbeitsblatt Bericht, wenn die gleiche Überschrift gefunden wird.
Dieses Bild kann helfen, zu verstehen. Erklärung
Mein erster Versuch:
Dim MyFile As String
Dim ws As Worksheet
''Workbook that contains one worksheet with all the headings ONLY NO DATA
Dim TargetWS As Worksheet
Set TargetWS = ActiveSheet
Dim TargetHeader As Range
''Location of Headers I want to search for in source file
Set TargetHeader = TargetWS.Range("A1:G1")
''Source workbook that contains multiple sheets with data and headings _
not in same order as target file
Dim SourceWB As Workbook
Set SourceWB = Workbooks("Source.xlsx")
Dim SourceHeaderRow As Integer: SourceHeaderRow = 1
Dim SourceCell As Range
''Stores the col of the found value and the last row of data in that col
Dim RealLastRow As Long
Dim SourceCol As Integer
''Looping through all worksheets in source file, looking for the heading I want _
then copying that whole column to the target file I have
For Each ws In SourceWB.Sheets
ws.Activate
For Each Cell In TargetHeader
If Cell.Value <> "" Then
Set SourceCell = Rows(SourceHeaderRow).Find _
(Cell.Value, LookIn:=xlValues, LookAt:=xlWhole)
If Not SourceCell Is Nothing Then
SourceCol = SourceCell.Column
RealLastRow = Columns(SourceCol).Find("*", LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If RealLastRow > SourceHeaderRow Then
Range(Cells(SourceHeaderRow + 1, SourceCol), Cells(RealLastRow, _
SourceCol)).Copy
TargetWS.Cells(2, Cell.Column).PasteSpecial xlPasteValues
End If
End If
End If
Next
Next
Ich erhalte einen Fehler von Anwendungs definiert oder Objekt definierte Fehler Laufzeit 1004. Gibt es etwas falsch mit meiner Logik/Syntax ..?
Bitte helfen, ich bin so schlecht in VBA.
Vielen Dank im Voraus!
In welcher Zeile tritt der Fehler auf? – INOPIAE
'dim Cell as Range', und mein alter Freund' Option Explicit' –