Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1752to1756
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

Import von mehr als einer Datei

Import von mehr als einer Datei
27.04.2020 14:56:42
mehr
Hallo zusammen,
ich habe folgende Frage:
Die Funktion

Application.GetOpenFilename

erlaubt ja, den "Öffnen"-Dialog als Prompt aufzurufen und eine Datei einzulesen. Das funktioniert bisher auch sehr gut in meinem VBA Auswertungstool.
Nun bietet diese Funktion auch die Eigenschaft "Multiselect:=true".
Diese würde ich gerne nutzen um mehrere CSV Listen über den Öffnen-Dialog auszuwählen und in einem Datenblatt zusammenzuführen.
Also quasi aus 3 Arbeitsblatt mach 1 Arbeitsblatt. Ich finde keine Forenbeiträge, die diesen Prozess abbilden. Die meisten Skripte folgen dem Ansatz, einen Ordnerpfad zu spezifizieren und dort die Daten einzusammeln. Das ist mir allerdings zu unflexibel, zumal ich den Import über Application.GetOpenFilename an anderer Stelle schon erfolgreich einsetze.
Jemand eine Idee? Oder die Lösung, wie ich mein Ziel umsetzen kann?
Im ersten Schritt würde mir reichen, wie ich die drei ausgewählten Dateien in einer Arbeitsmappe geöffnet bekomme. Das Zusammenführen auf ein Arbeitsblatt würde ich wahrscheinlich auch selber hinbekommen. Sollte aber jemand eine gute Lösung haben, wäre ich sehr dankbar.
Danke im Voraus!
Grüße
Sascha

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Import von mehr als einer Datei
27.04.2020 15:51:45
mehr
Gleichzeitig alle 3 Dateien zu öffnen bringt nix, da Excel sie ja nicht gleichzeitig bearbeiten kann.
Du solltest die ausgewählten Sateien in einer Schleife öffnen und bearbeiten.
AW: Import von mehr als einer Datei
27.04.2020 20:59:44
mehr
Ich verstehe was du meinst, aber wofür gibt es dann die Option "Multiselect"?
AW: Import von mehr als einer Datei
27.04.2020 21:00:56
mehr
Zum reinen Öffnen.
AW: Import von mehr als einer Datei
27.04.2020 22:04:22
mehr
Okay, aber das ist ja das was ich mir davon verspreche. Damit die Mitarbeiter nicht jede Datei einzeln öffnen müssen, soll er im ersten Schritt mit Get.Open.Filename (Mutliselect:=true) die 3 Dateien als separates Worksheet in meine aktiven Workbook importieren.
Den Rest mache ich dann sequenziell mit Schleifen und lösche im Anschluss die überflüßigen Worksheets wieder.
Anzeige
AW: Import von mehr als einer Datei
28.04.2020 16:38:35
mehr
Das funktioniert bis hierher schon super :)
Er gibt mir zunächst schon mal die 3 CSV Listen in meinem Workbook als separate Worksheets (Temp1, Temp2, Temp3) aus.

Sub ImportCSVGroup()
On Error GoTo FehlerHandling
Dim i As Integer
Dim wS As Worksheet
Dim strFile As Variant
strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Wählen Sie die drei  _
CSV Dateien aus...", MultiSelect:=True)
If IsArray(strFile) Then
For i = LBound(strFile) To UBound(strFile)
Set wS = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(ActiveWorkbook. _
Worksheets.Count))
wS.Name = "Temp" & i
With wS.QueryTables.Add(Connection:="TEXT;" & strFile(i), Destination:=wS.Range( _
"A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = False
.Refresh
End With
Next i
End If
FehlerHandling:
Exit Sub
End Sub

Jetzt habe ich eine Frage zum "guten Stil".
Ich muss jetzt die 3 Listen zusammenführen und bereinigen. In meinem aktuellen Ansatz durchlaufe ich eine doppelte For-Schleife über alle 3 Listen und ziehe dabei gezielt jede Zeile nach "Schema" in das "Quelle" Worksheet.

For i = 1 To 3
With ActiveWorkbook.Sheets("Temp" & i)
zeileMax = .UsedRange.Rows.Count
For Zeile = 4 To zeileMax
If Left(.Cells(Zeile, 1).Value, 1) = "D" Then
tempZeileMax = Sheets("Quelle").Cells(Rows.Count, "A").End(xlUp).Row
.Rows(Zeile).Copy Destination:=Worksheets("Quelle").Rows(tempZeileMax + 1)
End If
Next Zeile
End With
Next i
Könnte es aus Geschwindigkeitsgründen ein besserer Ansatz sein, erst "simpel" per Range.Copy die 3 Listen in einer zusammenzuführen und erst dann die For-Schleife zur Ermittlung der relevanten Zeilen zu nutzen?
Anzeige
AW: Import von mehr als einer Datei
28.04.2020 16:39:29
mehr
MarkUp...
AW: Import von mehr als einer Datei
02.05.2020 06:52:48
mehr
Hi Sascha,
was bedeutet denn "MarkUp"?
Aber unabhängig davon würde ich dir auf deine neue Frage vorschlagen:
neue Frage = neuer Beitrag
Ciao
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige