Hallo zusammen,
ich versuche mal grob mein Problem zu beschreiben. Es gibt mehrere Excel-Dateien (Excel Version 2010). Dies sind Meldebögen
für Kunden. Der Aufbau entspricht nicht einem klassischen Tabellenaufbau. In einzelnen Zellen (B1, B3, B5, B6, E3)stehen Daten wie Name,
Kundennummer etc.. Darunter folgt ein normaler Tabellenaufbau von A10:A19 bis I10:I19. Durch Klick auf einen Button
sollen die Daten der einzelnen Dateien importiert und in der Hauptdatei von A3:Q3 eingefügt werden. Wenn mehrere Dateien ausgewählt sind,
werden die Daten automatisch eine Zeile weiter nach unten eingetragen. Das funktioniert so weit auch wie ich mir das vorstelle.
Mein Problem: In den Zellen B1, B3, B5, B6, E3 stehen immer nur Einzelwerte. Von A10:A19 bis I10:I19 können mehrere Werte auftreten.
Bsp.: Kunde Max Mustermann (B1) hat 3 Produkte x (A10:A13). Werden Die Daten nun Importiert so habe ich in der Hauptsatei das Problem, dass bei mehreren Dateien
die Zeilen versetzt werden. Also der Neue Kunde steht zwar unter Max Mustermann, aber direkt neben den Produkten von Max Mustermann.
Wie kann ich das Problem lösen, dass wenn z.B die Range A10:A13 umfasst die einzelne Zelle B1 automatisch um die jeweilige größe der Spalte nach unten versetzt wird?
Am liebsten wäre mir, wenn dann z.B 3 mal der Name Max Mustermann erscheinen würde. Ich hoffe Ihr könnt mir bei meinem Problem helfen :)
Hier mein Code:
Public Sub Daten_mehrerer_Dateien_zusammenfuehren()
'
'
'
'
On Error GoTo errExit
Dim WBQ As Workbook
Dim WBZ As Workbook
Dim varDateien As Variant
Dim lngAnzahl As Long
Set WBZ = ActiveWorkbook
WBZ.Worksheets(1).Range("A3:IV65536").ClearContents
varDateien = _
Application.GetOpenFilename("Datei(*.xlsm),*.xlsm", False, "Bitte gewünschte Datei(en) markieren", False, True)
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
For lngAnzahl = LBound(varDateien) To UBound(varDateien)
Set WBQ = Workbooks.Open(Filename:=varDateien(lngAnzahl))
WBQ.Worksheets(1).Range("A10:A19").Copy
WBZ.Worksheets(1).Range("E" & WBZ.Worksheets(1).Range("E65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("B10:B19").Copy
WBZ.Worksheets(1).Range("C" & WBZ.Worksheets(1).Range("C65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("E10:E19").Copy
WBZ.Worksheets(1).Range("M" & WBZ.Worksheets(1).Range("M65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("F10:F19").Copy
WBZ.Worksheets(1).Range("H" & WBZ.Worksheets(1).Range("H65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("G10:G19").Copy
WBZ.Worksheets(1).Range("Q" & WBZ.Worksheets(1).Range("Q65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("H10:H19").Copy
WBZ.Worksheets(1).Range("I" & WBZ.Worksheets(1).Range("I65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("I10:I19").Copy
WBZ.Worksheets(1).Range("N" & WBZ.Worksheets(1).Range("N65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("B1").Copy
WBZ.Worksheets(1).Range("A" & WBZ.Worksheets(1).Range("A65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("B3").Copy
WBZ.Worksheets(1).Range("D" & WBZ.Worksheets(1).Range("D65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("E3").Copy
WBZ.Worksheets(1).Range("B" & WBZ.Worksheets(1).Range("B65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("B5").Copy
WBZ.Worksheets(1).Range("K" & WBZ.Worksheets(1).Range("K65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Worksheets(1).Range("B6").Copy
WBZ.Worksheets(1).Range("L" & WBZ.Worksheets(1).Range("L65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=False, Transpose:=False
WBQ.Close
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Es wurden " & UBound(varDateien) & " Dateien zusammengefügt.", 64
Exit Sub
errExit:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
If Err.Number = 13 Then
MsgBox "Es wurde keine Datei ausgewählt"
Else
MsgBox "Es ist ein Fehler aufgetreten!" & vbCr _
& "Fehlernummer: " & Err.Number & vbCr _
& "Fehlerbeschreibung: " & Err.Description
End If
End Sub
|