Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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

Datenimport aus mehreren Dateien

Datenimport aus mehreren Dateien
09.05.2019 18:23:22
Böhm
Hallo Zusammen,
ich habe im Prinzip das gleiche Problem wie im Beitrag "2011-12-30 19:05:53 viktor bruckman Datenimport aus mehreren Textdateien". Der einzige Unterschied ist, dass die Dateien in verschiedenen Ordnern gespeichert werden. Jeder Anwender soll dann seinen Ordner auswählen können und das Programm importiert die Daten in ein neues Worksheet. Sobald ich allerdings Chdrive und Chdir durch eine andere Option(application.fileDialog oder This.Workbook.Path9 ersetze, wird zwar der erste Dateiname,an der richtigen Stelle, ausgegeben im folgenen erhalte ich aber den Laufzeitfehler 53 "Datei nicht gefunden". Da er den Namen im ersten durchgang findet vermute ich den Fehler irgendwo in dem Loop.
Merkwürdigerweise klappt der Code alle paar Versuche für ein paar durchgänge nur um dann wieder den Fehler anzugeben. (müssen vielleicht bestimmte Variabeln wieder auf 0 gesetzt werden?)
Ich hoffe das ist für euch nur ein kleines Problem und würde mich über Lösungsvorschläge sehr freuen.
Vieln Dank im Voraus und anbei die Quelle meiner Verzweiflung

Sub Import_DPT_Vertex70_Auswahl()
Dim sp, ze, i, ws, wz As Long
Dim fn, pfads, fileart, strTmp, strTxt As String
Dim x As Variant
Dim sh As Worksheet
Set sh = ActiveWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
ActiveSheet.Name = Format(Now, "dd/mm/yy hh-mm")
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
pfads = .SelectedItems(1)
End If
If pfads = "" Then
Exit Sub
End If
End With
'pfads = ThisWorkbook.Path (als Alternativweg)
Cells(1, 1) = pfads
fileart = "*.dpt"
Cells(5, 2) = "Wellenzahl"
With sh
wz = 6
ws = 2
ze = 3
pfads = Cells(1, 1)
fn = Dir(pfads & "\" & fileart)
Do While fn  ""
sp = 2
.Cells(5, ze).Value = fn
Open fn For Input As #1
Do While Not EOF(1)
Line Input #1, strTxt
x = Split(strTxt, ",")
For i = 1 To UBound(x)
.Cells(sp + 4, ze).NumberFormat = "0.00000"
.Cells(sp + 4, ze) = x(i)
.Cells(wz, ws) = x(o)
Next i
sp = sp + 1
wz = wz + 1
Loop
Close
sp = 2
ze = ze + 1
fn = Dir()
Loop
Close #1
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport aus mehreren Dateien
09.05.2019 20:45:39
Luschi
Hallo Böhm,
schon allein in diesen 2 Vba-Zeilen gibt es Ungenauigkeiten:
Set sh = ActiveWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
ActiveSheet.Name = Format(Now, "dd/mm/yy hh-mm")
Bei mir sieht das so im Code aus:

With ActiveWorkbook
Set sh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
End with
sh.Name = Format(Now, "dd/mm/yy hh-mm")
Beachte innerhalb der With-Klausel die Punkte vor Worksheets und warum erzeugst Du eine Objektvariable 'sh', wenn Du sie dann nicht konsequent benutzt - mit ActiveSheet muß dann Schluß sein!
Gruß von Luschi
aus klein-Paris
PS: Mehr schaue ich mit morgen an.
Anzeige
AW: Datenimport aus mehreren Dateien
09.05.2019 21:09:44
Matthias
Moin!
Ergänzend zu den Hinweisen von Luschi, füge mal vor der Open Anweisung die Zeile hier ein.
fn = pfads & "\" & fn

Die Open Anweisung braucht einen Pfad. Lediglich, wenn die zu öffnende Datei im selben Ordner wie die QUellcodedatei liegt, sollte es auch ohne Pfad klappen. Bei dir war in fn aber nur der Dateiname angegeben.
Ansonsten überprüfe auch mal wo du was hinschreibst. OHne den Punkt vor cells geht es nicht in das neu angelegte Blatt.
VG
AW: Datenimport aus mehreren Dateien
09.05.2019 23:35:13
Böhm
Nabend,
vielen Dank euch beiden jetzt funktioniert alles wie geplant.
Anbei mein fertiger Code, solltet ihr noch Anregungen/Verbesserungen haben nehme ich diese gerne entgegen.
Ansonsten bin ich mit dem Ergebnis sehr zufrieden und wünsche euch noch eine schöne Woche.
Sub Import_DPT_Vertex70_Auswahl()
Dim sp, ze, i, ws, wz As Long
Dim fn, pfads, fileart, strTmp, strTxt As String
Dim x As Variant
Dim sh As Worksheet
With ActiveWorkbook
Set sh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
End With
sh.Name = Format(Now, "dd/mm/yy hh-mm")
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
pfads = .SelectedItems(1)
End If
If pfads = "" Then
Exit Sub
End If
End With
fileart = "*.dpt"
Cells(5, 2) = "Wellenzahl"
With sh
wz = 6
ws = 2
ze = 3
fn = Dir(pfads & "\" & fileart)
Do While fn  ""
sp = 2
.Cells(5, ze).Value = fn
fn = pfads & "\" & fn
Open fn For Input As #1
Do While Not EOF(1)
Line Input #1, strTxt
x = Split(strTxt, ",")
For i = 1 To UBound(x)
.Cells(sp + 4, ze).NumberFormat = "0.00000"
.Cells(sp + 4, ze) = x(i)
.Cells(wz, ws) = x(o)
Next i
sp = sp + 1
If wz = 1820 Then
Else
wz = wz + 1
End If
Loop
Close
sp = 2
ze = ze + 1
fn = Dir()
Loop
Close #1
End With
End Sub

Anzeige
AW: Datenimport aus mehreren Dateien
10.05.2019 07:15:35
Luschi
Hallo Böhm,

- bei dieser Deklaration: Dim sp, ze, i, ws, wz As Long
ist nur ws vom Typ 'Long' alle anderen haben den Datentyp 'Variant
sowas geht erst in VB.Net
Das selbe trift analog für die 2. Dim-Zeile zu.
- statt Cells(5, 2) = "Wellenzahl"
so: With sh
.Cells(5, 2) = "Wellenzahl"
- For i = 1 To UBound(x) besser so:
For i = LBound(x) To UBound(x)
- Open fn For Input As #1 so ändern:
Dim ff As Integer
ff = FreeFile
Open fn For Input As #ff
Do While Not EOF(ff)
Line Input #ff, strTxt
'und nach dem Loop: Close #ff
- .Cells(sp + 4, ze) = x(i) liest sich so besser: .Cells(sp + 4, ze).Value = x(i)
- zum Schluß alle definierten Objektvariablen zerstören:
Set sh = Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
AW: kleine Korrektur...
10.05.2019 07:19:47
Luschi
Hallo Böhm,
statt ws ist wz gemeint, also heißt meine Anmerkung so:
- ist nur wz vom Typ 'Long' alle anderen haben den Datentyp 'Variant'
Gruß von Luschi
aus klein-Paris

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige