Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
156to160
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
156to160
156to160
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

txt-Import: Excel hängt sich auf bei Zeile 40.000

txt-Import: Excel hängt sich auf bei Zeile 40.000
13.09.2002 12:26:50
Thomas
Hallo Excel-Gemeinde, hallo Hans,

ich habe ein Problem, daß ich neulich schonmal ins Forum getragen habe, und zwar geht es um die Auswertung/Auszählung von Unix-Serverlogs (Apache) mit einer VBA-Routine.

Ich habe in einer xls-Datei, die Hans Herber mir freundlicherweise geschickt hat, ein paar Pfadanpassungen vorgenommen, und kann damit jetzt Logfiles im txt-Format bearbeiten. Das Problem ist nur:
irgendwo bei Zeile 40.000 oder so hängt Excel sich auf, die CPU-Beanspruchung steigt auf 100% und dann muss ich Excel mit dem Task Manager abschießen. Und 40.000 Zeilen ist nicht so fürchterlich viel für ein Serverlog.

Frage: Gibt es nicht eine Möglichkeit, die Bearbeitung Datensatz für Datensatz durchzuführen? Dann wäre es egal, wie groß die zu bearbeitende Datei ist.

Im Moment sieht der VBA-Code so aus ((C) in dieser Form by Hans Herber) :

Option Explicit

Sub ParseTxt()
Dim var As Variant
Dim lCounter As Long
Dim iRow As Integer
Dim sFile As String, sTxt As String
Dim bln As Boolean
Application.ScreenUpdating = False
bln = Application.DisplayStatusBar
Application.DisplayStatusBar = True
sFile = Range("E1").Value
If Dir(sFile) = "" Then
Beep
MsgBox "Datei " & sFile & " wurde nicht gefunden!"
Exit Sub
End If
On Error GoTo ERRORHANDLER
Close
Open sFile For Input As #1
Do Until EOF(1)
lCounter = lCounter + 1
If lCounter Mod 100 = 0 Then
Application.StatusBar = "Bearbeite Zeile " & lCounter & "..."
End If
Line Input #1, sTxt
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, "("))
sTxt = Left(sTxt, InStr(sTxt, ")") - 1)
var = Application.Match(sTxt, Columns(1), 0)
If IsError(var) Then
iRow = iRow + 1
Cells(iRow, 1).Value = sTxt
Cells(iRow, 2).Value = 1
Else
Cells(var, 2).Value = Cells(var, 2).Value + 1
End If
Loop
ERRORHANDLER:
Close
Application.StatusBar = False
Application.DisplayStatusBar = bln
Application.ScreenUpdating = True
End Sub

Grüße,
Thomas

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hilfe weiter nötig?
13.09.2002 18:29:22
Andre
Hallo Thomas,
die Daten werden zumindest Zeilenweise aufgenommen. Die Frage ist, ob Excel hier ein Problem >40.000 hat oder ob in Deinem Log eine Maus steckt, z.B. ab dort fehlt das carriage return oder Neudeutsch Zeilenwechsel oder es stecken irgendwelche Steuerzeichen drin.
Leider komme ich bei meinen Files nur bis höchstens etwa 10.000.
Wenn sich Excel aufhängt, siehst Du ja auf 100 genau die Fehlerstelle. Da kannst Du unter UNIX (hoffentlich) mit dem Texteditor ab der Zeile nachschauen - der zeigt auch die Steuerzeichen an, vi hilft da vielleicht nicht.
gruss andre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige