Registriert seit: 17.12.2015
Version(en): Office365
Hallo, ich bin der neue hier :43:
Ich stehe vor einem (für mich) großem Problem und hoffe mir kann hier jemand helfen dieses zu Lösen.
In einen Order werden automatisch Log Dateien geschrieben. Diese bestehen immer aus Datum, Start und Ende.
Hier ein Muster: "2015.12.15_16.12.48-16.13.02.log"
Gibt es eine Möglichkeit das Excel, so lange es geöffnet ist, den Ordner "überwacht" und immer wenn ein File hinzu kommt dieses sortiert nach Tag in eine Spalte schreibt?
In Spalte A1-A100 werden dann alle Logs untereinander mit dem Datum "2015.12.15" aufgelistet, in Spalte B1-B100 die vom nächsten Tag und so weiter.
Ich bekomme das irgendwie nicht hin. Aktuell liste ich den gesamten Ordnerinhalt In Spalte A untereinander auf. Dies muss ich aber immer manuell machen. Des weiteren schränkt die unterschiedliche Anzahl der Logs pro Tag die automatische weiterverarbeitung sehr ein.
Hoffe hier hat jemand eine bessere Lösung für mich auf Lager.
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Moin,
willst du die Daten wirklich nur umschichten, ohne die Chance zur Auswertung?
Ich würde erst einmal die protokollierten Daten in drei Spalten aufteilen, dann lässt sich damit auch etwas machen.
Danach Wäre vielleicht untereinander (ähnlich wie bisher) die bessere Lösung, denn dann kann per PivotTable hervorragend gefiltert und ausgewertet werden.
Den Import kannst du dann (täglich?) per VBA anstoßen und auch die Aufgliederung durchführen lassen.
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 17.12.2015
Version(en): Office365
17.12.2015, 09:45
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 09:46 von Reismann.)
Auswerten tue ich die Daten anschließend anhand von dem importierten Dateinamen, um den Inhalt der log Datei geht es mir nicht. Die Auswertung ist auch überhaupt nicht das Problem, die funktioniert wie gewollt. Ich bekomme es lediglich nicht hin die Daten automatisch zu importieren und in die einzelnen Spalten aufzuteilen.
Damit meine Auswertung funktioniert müssen die Dateinamen (komplett inkl. Endung) in Spalten Sortiert nach Datum aufgelistet sein. Aber am Automatischen (Falls automatisch nicht möglich, dann wenigstens per klick auf einen Button) auslesen des Verzeichnisses scheitert es aber bei mir.
Eine Verlinkung der aufgelisteten Dateien wäre noch das Sahnehäubchen wenn alles funktioniert. Aber das hätte keine Priorität.
EDIT: Die Daten weiterhin untereinander aufzulisten, ohne sie in verschiedene Spalten dach Datum zu trennen, wäre für mich suboptimal da es meine weitete Bearbeitung aufgrund der unterschiedlichen Anzahl der Log Files einschränken würde. Daher wäre mir eine automatische Trennung wichtig.
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
17.12.2015, 11:27
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 11:29 von GMG-CC.)
Ich hoffe, dass ich dich richtig verstanden habe:
Code: Option Explicit
Sub LogFiles() 'By GMG-CC.de'
Dim Anz As Integer
Dim DateiName As String, Pfad As String
Dim aDateiNamen() As String
Dim lCol As Integer, Sp As Integer, Ze As Integer
Dim Datum As Date, aDatum, DatumGefunden As Boolean
Application.ScreenUpdating = False
Pfad = "C:\Test\"
DateiName = Dir(Pfad & "*.log")
Do While Len(DateiName)
If DateiName <> ThisWorkbook.Name Then
Anz = Anz + 1
ReDim Preserve aDateiNamen(1 To Anz)
aDateiNamen(Anz) = DateiName
End If
DateiName = Dir
Loop
ActiveSheet.Cells.Clear
For Ze = 1 To UBound(aDateiNamen)
aDatum = Split(Left(aDateiNamen(Ze), 10), ".")
Datum = DateSerial(aDatum(0), aDatum(1), aDatum(2))
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
DatumGefunden = False
For Sp = 1 To lCol
If Cells(1, Sp) = Datum Then
DatumGefunden = True
Exit For
End If
Next Sp
If DatumGefunden Then
lrow = Cells(Rows.Count, Sp).End(xlUp).Row
Cells(lrow + 1, Sp) = aDateiNamen(Ze)
Else
Cells(1, lCol + 1) = Datum
Cells(2, lCol + 1) = aDateiNamen(Ze)
End If
Next Ze
Columns(1).Delete
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Den Pfad musst du natürlich noch anpassen.
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 17.12.2015
Version(en): Office365
17.12.2015, 11:45
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 11:55 von Reismann.)
Vielen Dank schon mal für deine Unterstützung bei der Lösung meines Problems
Leider bekomme ich beim Ausführen eine Fehlermeldung mit verweis auf "lrow"
Code: If DatumGefunden Then
lrow = Cells(Rows.Count, Sp).End(xlUp).Row
Cells(lrow + 1, Sp) = aDateiNamen(Ze)
Excel meldet sich dann mit "Fehler beim Kompilieren" "Variable nicht definiert"
Hast du dafür eine Erklärung? Habe ich was vergessen?
EDIT: Habe die Variable am Anfang noch eingefügt. Jetzt bekomme ich einen "Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs" mit Bezug auf folgende Zeile:
Code: For Ze = 1 To UBound(aDateiNamen)
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Ja, ich habe irgendwie die vorletzte Testversion erwischt :@
Ersetze die DIM - Zeilen bitte mit diesen Zeilen, dann klappt es:
Code: Dim Anz As Integer
Dim DateiName As String, Pfad As String
Dim aDateiNamen() As String
Dim lCol As Integer, Sp As Integer, Ze As Integer, lRow As Long
Dim Datum As Date, aDatum, DatumGefunden As Boolean
Prinzipiell reicht es auch, wenn du , lRow As Long an einer beliebigen Stelle im Dim-Block schreibst.
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 17.12.2015
Version(en): Office365
17.12.2015, 12:15
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 12:15 von Reismann.)
Leider bekomme ich dann aber immer noch diesen Fehler:
(17.12.2015, 11:45)Reismann schrieb: EDIT: Habe die Variable am Anfang noch eingefügt. Jetzt bekomme ich einen "Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs" mit Bezug auf folgende Zeile:
Code: For Ze = 1 To UBound(aDateiNamen)
EDIT: Lasse ich das "Option Explicit" am Anfang weg funktioniert es! Kann ich das weglassen? Oder benötige ich das für die korrekte Abarbeitung?
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Bei mir läuft's einwandfrei. Hier noch einmal der komplette Code (probiert):
Code: Option Explicit
Sub LogFiles() 'By GMG-CC.de
Dim Anz As Integer
Dim DateiName As String, Pfad As String
Dim aDateiNamen() As String
Dim lCol As Integer, Sp As Integer, Ze As Integer, lRow As Long
Dim Datum As Date, aDatum, DatumGefunden As Boolean
Application.ScreenUpdating = False
Pfad = "C:\Test\"
DateiName = Dir(Pfad & "*.log")
Do While Len(DateiName)
If DateiName <> ThisWorkbook.Name Then
Anz = Anz + 1
ReDim Preserve aDateiNamen(1 To Anz)
aDateiNamen(Anz) = DateiName
End If
DateiName = Dir
Loop
ActiveSheet.Cells.Clear
For Ze = 1 To UBound(aDateiNamen)
aDatum = Split(Left(aDateiNamen(Ze), 10), ".")
Datum = DateSerial(aDatum(0), aDatum(1), aDatum(2))
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
DatumGefunden = False
For Sp = 1 To lCol
If Cells(1, Sp) = Datum Then
DatumGefunden = True
Exit For
End If
Next Sp
If DatumGefunden Then
lRow = Cells(Rows.Count, Sp).End(xlUp).Row
Cells(lRow + 1, Sp) = aDateiNamen(Ze)
Else
Cells(1, lCol + 1) = Datum
Cells(2, lCol + 1) = aDateiNamen(Ze)
End If
Next Ze
Columns(1).Delete
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Wenn er "meckert": Welchen Wert hat die Variable Anz? Und welchen Wert die Funktion UBound(aDateiNamen)? Jeweils markieren und ToolTip abwarten.
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
17.12.2015, 12:28
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 12:28 von schauan.)
Hallo Reismann,
wie bekommst Du denn den Ordnerinhalt "manuell" nach Spalte A? Schreibst Du den Ordnerinhalt etwa ab oder hast Du da schon ein Makro?
Edit: Hab den Thread seit heute früh offen, die Frage geschrieben und etwas spät auf den Absenden-Button gedrückt
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Leicht OT:
@André:
Der Amerikaner sagt es sehr treffend: "Shit happens, all the time …" :19:
Beste Grüße
Günther
Excel-ist-sexy.de …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
|