Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei auswählen, bestimmten Bereich einf

Datei auswählen, bestimmten Bereich einf
24.03.2021 23:56:16
maxi
Hallo liebe Community,
ich sitze jetzt schon länger an dem Problem und komme einfach nicht weiter.
Ich möchte über einen picker eine Datei auswählen und bei dieser nach Kriterien filtern, einen bestimmten Bereich kopieren und in die aktive Liste untendrunter einfügen. Ich verstehe nicht wo es hieran scheitert.
Hat jemand eine Antwort parat?
Ich bedanke mich im Voraus!
Mit freundlichen Grüßen
Maxi
------------------------------------------------------------------------------------------------ _
------------------------------------------------

Sub AutoImport1()
Application.ScreenUpdating = False
Sheets("Archiv").Select
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Dim ErsteLeerzeile As Long
ErsteLeerzeile = Sheets("Archiv").Cells(Rows.Count, 1).End(xlUp).Row + 1
Dim strDatei As String
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "xyz"
.Title = "Bitte Datei auswählen"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewDetails
If .Show = -1 Then
strDatei = .SelectedItems(1)
Else
Exit Sub
End If
End With
Workbooks.Open Filename:=strDatei
Dim ImportDateiName As String
ImportDateiName = ActiveWorkbook.Name
Sheets("Maßnahmenliste").Activate
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ActiveSheet.Range("$K$3:$K$" & Cells(Rows.Count, 1).End(xlUp).Row & ",$M$3:$M$" & Cells( _
Rows.Count, 1).End(xlUp).Row & ",$R$3:$R$" & Cells(Rows.Count, 1).End(xlUp).Row & ",$AM$3:$AM$"  _
_
_
_
_
_
& Cells(Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="=F"
ActiveSheet.Range("$K$3:$K$" & Cells(Rows.Count, 1).End(xlUp).Row & ",$M$3:$M$" & Cells( _
Rows.Count, 1).End(xlUp).Row & ",$R$3:$R$" & Cells(Rows.Count, 1).End(xlUp).Row & ",$AM$3:$AM$"  _
_
_
_
_
_
& Cells(Rows.Count, 1).End(xlUp).Row).Copy
Windows(ThisWorkbook.Name).Activate
Range("A" & ErsteLeerzeile).PasteSpecial Paste:=xlPasteValues
Windows(ImportDateiName).Close savechanges:=False
End Sub

-------------------------------------------------------------------------------------------------------------------------------

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei auswählen, bestimmten Bereich einf
25.03.2021 09:53:55
fcs
Hallo Maxi,
der per Autofilter zu filternde Zellbereich muss ein Zellbereich ohne Lücken sein.
Die zu kopierenden Zellblöcke müssen unterhalb der Titelzeile des Autofilter-Bereichs beginnen, wenn die Titelzeile nicht mit kopiert werden soll.
Ich hab für die im Code anzusprechenden Arbeitsmappen und Tabellenblättern Objekt-Variablen definiert.
Über diese Variablen lassen sich die Objekte besser ansprechen als wenn man zwischen Arbeitsmappen wechselt und mit ActiveSheet arbeitet.
Übersichtlicher wird es auch, wenn man die letzte Zeile mit Daten in der geöffneten Datei als Zwischenwert in einer Variablen speichert.
LG
Franz
Sub AutoImport1()
Dim ErsteLeerzeile As Long
Dim strDatei As String
Dim wkbZiel As Workbook, wksZiel As Worksheet, Zei_QL As Long
Dim wkbQuelle As Workbook, wksQuelle As Worksheet
Application.ScreenUpdating = False
Set wksZiel = ThisWorkbook.Sheets("Archiv")
With wksZiel
.Select
If .FilterMode Then .ShowAllData
ErsteLeerzeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "xyz"
.Title = "Bitte Datei auswählen"
.ButtonName = "Auswahl..."
.InitialView = msoFileDialogViewDetails
If .Show = -1 Then
strDatei = .SelectedItems(1)
Else
Exit Sub
End If
End With
Set wkbQuelle = Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
Set wksQuelle = wkbQuelle.Worksheets("Maßnahmenliste")
With wksQuelle
If .FilterMode Then .ShowAllData
Zei_QL = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("$K$3:$AM$" & Zei_QL).AutoFilter Field:=1, Criteria1:="F"
.Range("$K$4:$K$" & Zei_QL & ",$M$4:$M$" & Zei_QL & ",$R$4:$R$" & Zei_QL _
& ",$AM$4:$AM$" & Zei_QL).Copy
End With
ThisWorkbook.Activate
wksZiel.Range("A" & ErsteLeerzeile).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
wkbQuelle.Close savechanges:=False
End Sub


Anzeige
AW: Datei auswählen, bestimmten Bereich einf
25.03.2021 14:31:50
maxi
Hallo Franz,
vielen Dank für die Antwort und den Code. Der Code hat mir sehr geholfen und das kopieren und einfügen klappt auch sehr gut. Nur filtert dieser mir nicht nach Criterial = F. Es sind nach wie vor auch die anderen dabei. Liegt das an der Objektvariable "Zei_QL As Long"? Ich habe versucht das Problem selbst zu lösen aber hat leider nichts gewirkt. Könntest du mir hier nochmal helfen? :)
Ich bedanke mich im Voraus!
LG
Maxi

AW: Datei auswählen, bestimmten Bereich einf
25.03.2021 17:07:42
fcs
Hallo Maxi,
da bräuchte ich 2 Beispiel-Dateien
A) Datei mit Makro und dem Blatt "Archiv"
B) Datei mit dem Blatt "Maßnahmenliste"
Sensible Daten in den Dateien bitte weglassen oder durch Dummy-Daten ersetzen.
Im Blatt "Massnahmenliste" brauch ich nur ca. 10 bis 20. Dabei müsssn einige Zeilen mit "F" in Spalte K vorkommen.
Packe die beiden Dateien bitte in ein ZIP-File und lade die ZIP-Datei hier hoch.

Zei_QL = .Cells(Rows.Count, 1).End(xlUp).Row

An Zei_QL kann es eigentlich nicht liegen. Es ersetzt ja nur in deinem Makro in z.B.
ActiveSheet.Range("$K$3:$K$" & Cells(Rows.Count, 1).End(xlUp).Row 

den entsprechenden Ausdruck.
LG
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige