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

Textdateien möglichst schnell laden

Textdateien möglichst schnell laden
02.11.2003 20:20:55
Gunnar
Hallo, Leute!

Schon lange suche ich nach einer Möglichkeit, wie man auch sehr grosse Textdateien laden / importieren kann in Excel 97. Meiner Ansicht nach besteht die Lösung darin, Textdateien VOR dem Laden in Excel in eine xls-Datei zu konvertieren. Kennt jemand ein (möglichst kostenloses) Tool, mit dem das per command-line-interface möglich ist? Vielleicht gibt es ja noch eine andere Möglichkeit, dies am Besten und Schnellsten zu bewerkstelligen. Kann mir jemand weiterhelfen?

Bis dann und viel Spass noch mit Excel, Gunnar

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdateien möglichst schnell laden
02.11.2003 20:33:45
Ramses
Hallo

Probier mal das aus:


Sub Read_Bigdicttxt_File()
'Liest Text Datein mit mehr als 65536 Datensätzen ein
'und erstellt automatisch eine neu Arbetismappe und Worksheets
'Der eingelesene Text wird in Spalte 1 geschrieben
'der Reverse Text in spalte 2
'------------------------------
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim txtlines As Long, i As Long, n As Long
'Neue Mappe und Variables Tabellenblatt deklarieren
Dim tWkb As Workbook, tWks As String
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim textArr As Variant
Dim ReadFile As String
Dim OldStatusbar
'Dialog öffnen auf Basis von *.dat Files
ReadFile = Application.GetOpenFilename("DAT Files (*.txt;*.dat),")
'Schliessen einer geöffneten Datei
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
txtlines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
    Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
    'Zähler hochzählen
    txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1    ' Datei zum Einlesen öffnen.
'Array neu auf die Anzahl der Linien initialisieren
ReDim textArr(txtlines)
'Einlesen der Dateien in das Array
For i = 1 To txtlines
    Input #1, textArr(i)
Next i
Close #1
'Arbeitsmappe erstellen und zuweisen
Workbooks.Add
Set tWkb = ActiveWorkbook
'Alles löschen bis auf eine Tabelle
'>> Kosmetik :-)
For i = 2 To Worksheets.Count
    Application.DisplayAlerts = False
    Worksheets(i).Delete
    Application.DisplayAlerts = True
Next
OldStatusbar = Application.DisplayStatusBar
'Namen vergeben
Worksheets(1).Name = "Data1"
tWks = tWkb.Worksheets(1).Name
'Daten in aktuelles Sheet schreiben
n = 1
For i = 1 To txtlines
    Application.StatusBar = "Datensatz " & i & " von " & txtlines & " wird eingelesen"
    'Neue Tabelle anlegen wenn Zelle 65536 erreicht wurde
    If i Mod 65536 = 0 Then
        tWkb.Worksheets.Add after:=ActiveSheet
        ActiveSheet.Name = "Data" & i
        tWks = ActiveSheet.Name
        n = 1
    End If
    'Richtes Wort
    tWkb.Worksheets(tWks).Cells(n, 1) = textArr(i)
    'Wort umgedreht
    tWkb.Worksheets(tWks).Cells(n, 2) = StrReverse(textArr(i))
    n = n + 1
Next i
MsgBox "BigDict.txt vollständig eingelesen"
Application.DisplayStatusBar = OldStatusbar
End Sub 
     Code eingefügt mit Syntaxhighlighter 1.16



480'000 Zeilen in knapp 12 Sekunden ;-)

Gruss Rainer
Anzeige
AW: Textdateien möglichst schnell laden
02.11.2003 21:26:09
Gunnar
Hey, cool, danke vielmals, werde ich gleich mal machen. Woher haste das denn so schnell her?

Viele Grüsse, Gunnar
AW: Textdateien möglichst schnell laden
02.11.2003 21:32:33
K.Rola
Hallo, Ramses,

mit:
Workbooks.Add (1)
wird eine neue Mappe mit einem sheet erzeugt, dann kannst
du die Zeichen für die Kosmetik sparen :°)

Gruß K.Rola
Danke für die Info :-)) o.T.
02.11.2003 21:35:20
Ramses
...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige