Nun soll das Script aber so abgeändert werden, dass der Import nicht Zeilenweise erfolgt, sondern die Zeilen in Abhändigkeit der Spalte "D3", "D4" usw. befüllt.
So steht in Spalte "D2" immer eine E-Mailadresse. Diese ist eindeutig.
Wenn nun ein Exceldokument importiert wird, das in "D2" die Mailadresse "max_mustermann@excel.org" enthält, dann soll die Importzeile in genau die Zeile der Kontainerdatei kopiert werden, wo auch "max_mustermann@excel.org" zu finden ist. So ist anfänglich die Kontainerdatei gespickt mit möglicherweise nicht vollen Zeilen und erlaubt so einen guten Überblick, welche Dateien nicht nicht importiert wurde.
Lässt sich das in dieses VBA Script integrieren? Wenn ja bitte ich um die Ergänzungen, da ich kaum VBA-Kenntnisse habe und schon ewig alles möglich versuche.
Sub Import_mit_Dialog()
Dim Ziel As Object
Dim Datei As Variant
Dim LoI As Long
Dim Loletzte As Long
Dim i As Long
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Excel-Dateien (*.xlsx), *.xlsx", , "xlsx", "Auswahl", _
True)
'Datei = Application.GetOpenFilename("Excel-Dateien(*.xlsx),*xlsx")
'Abbrechen falls keine Datei ausgewählt
If VarType(Datei) = vbBoolean Then
MsgBox "Uups, es wurde keine Importdatei ausgewählt!", vbOKOnly + vbInformation
Else
'MsgBox "Ausgewählte Datei: " & Datei, , ""
'Ausgewählte Datei öffnen
For i = LBound(Datei) To UBound(Datei)
Workbooks.Open Filename:=Datei(i)
Set Ziel = ThisWorkbook.Worksheets(1)
Application.EnableEvents = False
With ActiveWorkbook.Worksheets(1)
Loletzte = Ziel.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
.Range("A2:" & Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row, _
.UsedRange.SpecialCells(xlCellTypeLastCell).Column).Address).Copy Ziel. _
Cells(Loletzte, 1)
ActiveWorkbook.Close False
End With
Application.EnableEvents = True
'Speicher freigeben
Set Ziel = Nothing
Next
End If
Exit Sub
Fehler:
Application.EnableEvents = True
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub