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, 10:45
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 10: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, 12:27
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 12: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, 12:45
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 12: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, 13:15
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 13:15 von Reismann.)
Leider bekomme ich dann aber immer noch diesen Fehler: (17.12.2015, 12: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, 13:28
(Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015, 13: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!
|