Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1540to1544
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

mehrere Dateien einlesen

mehrere Dateien einlesen
08.02.2017 09:08:25
Franky
Hallo zusammen,
ich habe ein kleines Problem.
Ich lese mit folgendem Code eine Logdatei von einem Server ein. Die Logdatei hat immer das gleiche Namen, nur die Dateiendung ändert sich. Diese Endung besteht aus dem entsprechendem Datum. Beispiel Logfile.20160621 (JJJJMMDD)
Das funktioniert alles Prima. Nun möchte ich aber Mehrere Dateien auf einmal einlesen. D.h. ich möchte das Startdatum und das Enddatum auswählen und dann alle Dateien in diesem Bereich einlesen.Diese sollen dann im Blatt Daten untereinander geschrieben werden.Kann mit hier jemand helfen?
Sub Import()
'Variablen dimensionieren
Dim iRow As Integer, iCol As Integer
Dim sFile As String, sTxt As String
Dim vntTmp As Variant
Dim Datum As String
Dim jahr As String
Dim monat As String
Dim tag As String
Dim Strformat As String
'Werte im Blatt "Daten" vor dem einfügen neuer Daten löschen
Worksheets("Daten").Range("C1:DW1441").ClearContents
'Variable Datum mit Wert aus DTPicker1 Steuerelement belegen
Datum = Me.DTPicker1.Value
'Dialog Datumseingabe schliesen
Unload frmDatum
'aus Variable Datum ein Datum im Datformat JJJJMMDD umwandeln für Dateinamen
jahr = Right(Datum, 4)
monat = Mid(Datum, 4, 2)
tag = Left(Datum, 2)
Datformat = jahr & monat & tag
'Dateipfad mit Dateinamen und Dateiendung verknüpfen
sFile = "\\Server\logfiles\log\wfm_tag.log." & Datformat
'Fehlerroutine wenn Datei nicht gefunden
If Dir(sFile) = "" Then
Beep
Unload frmDatum
MsgBox "Datei wurde nicht gefunden!"
Exit Sub
End If
'Zielzelle zum einfügen auswählen
iRow = 1
iCol = 3
'Import routine
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
sTxt = Replace(sTxt, ",", ".")
vntTmp = Split(sTxt, ";")
vntTmp = Application.Transpose(Application.Transpose(vntTmp))
Worksheets("Daten").Cells(iRow, iCol).Resize(1, UBound(vntTmp, 1)) = vntTmp
iRow = iRow + 1
Loop
Close #1
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Dateien einlesen
08.02.2017 19:30:28
littletramp
Hallo Franky
Hier die Lösung. Wenn du beim Aufruf der Prozedur Import() das Enddatum nicht angibst, so wird nur der Starttag ausgelesen.
Option Explicit
Sub Start()
Dim Start As Variant, Ende As Variant
Do
Start = InputBox(Prompt:="Startdatum?")
If Start = "" Then Exit Sub
Loop Until IsDate(Start)
Do
Ende = InputBox(Prompt:="Enddatum?", Default:=Date)
If Ende = "" Then Exit Sub
Loop Until IsDate(Ende)
Import Start, Ende
End Sub
Sub Import(ByVal Startdatum As Date, Optional ByVal Enddatum As Date = 0)
Dim sTxt As String, vntTmp As Variant
Dim iRow As Integer, iCol As Integer
Dim i As Long, AnzTage As Long
Dim sFile As String
'Dateipfad und Namenbasis mit . (Punkt)
Const csfile = "\\Server\logfiles\log\wfm_tag.log."
If Enddatum = 0 Then Enddatum = Startdatum
AnzTage = DateDiff("d", Startdatum, Enddatum) + 1
'Zielzelle zum einfügen auswählen
iCol = 3
iRow = Worksheets("Daten").Cells(Rows.Count, iCol).End(xlUp).Row + 1
For i = 1 To AnzTage
sFile = csfile & Format(DateAdd("d", i - 1, Startdatum), "yyyymmdd")
If Len(Dir(sFile)) Then
'Import routine
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
sTxt = Replace(sTxt, ",", ".")
vntTmp = Split(sTxt, ";")
vntTmp = Application.Transpose(Application.Transpose(vntTmp))
Worksheets("Daten").Cells(iRow, iCol).Resize(1, UBound(vntTmp, 1)) = vntTmp
iRow = iRow + 1
Loop
Close #1
End If
Next i
End Sub
Gruss Markus
Anzeige
AW: mehrere Dateien einlesen
09.02.2017 15:54:50
Franky
Hallo Markus,
vielen vielen Dank. Das klappt wunderbar. Das hat mir unglaublich viel Zeit gespart.
Jetzt muss ich für mich nochmal den Code Zeile für Zeile analysieren um das in den Kopf
zu bekommen, damit ich das bei bedarf selbst einmal umsetzen kann.
Allerdings hab ich noch ein Problem, die Dateien die Importiert werden haben eine Überschrift
und diese wird damit auch immer importiert. Kann ich den Import auch aus Zeile 2 der Quelldatei starten?
Gruß Franky

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige