Microsoft Excel

Excel und VBA: Beitrag aus Herbers Excel-Forumsarchiv

text Datei schneller importieren

Betrifft: text Datei schneller importieren
von: Sascha
Geschrieben am: 28.04.2012 10:55:28

einen schönen guten morgen,

folgendes "problem", ich importiere mit folgendem code daten aus einer txt datei nach excel.

Sub DateiImport1()
   Dim iRow As Integer, iCol As Integer
   Dim sFile As String, sTxt As String
   sFile = Sheets("Baum52").Range("C19").Value
   If Dir(sFile) = "" Then
      Beep
      MsgBox "Datei wurde nicht gefunden!"
      Exit Sub
   End If

   iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
   iCol = 1
   Close
   Open sFile For Input As #1
      Do Until EOF(1)
         Line Input #1, sTxt
         Do While InStr(sTxt, ";")
            Cells(iRow, iCol).Value = Left(sTxt, InStr(sTxt, ";") - 1)
            sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, ";"))
            iCol = iCol + 1
         Loop
         Cells(iRow, iCol).Value = sTxt
         iRow = iRow + 1
         iCol = 1
      Loop
   Close
End Sub
(die daten stehen in der txt datei semikolon getrennt, meist immer zwischen 5 bis 15 spalten und 10 bis 30 zeilen)

Das funktioniert soweit auch ganz gut, LEIDER dauert es teilweise ganz schön lange (2-3 min)....

gibt es eine möglichkeit die daten anders (schneller) einzulesen?

liebe grüße
sascha

  

Betrifft: AW: text Datei schneller importieren
von: Hajo_Zi
Geschrieben am: 28.04.2012 11:12:27

Hallo Sascha,

warum machst Du nicht einfach Datei öffnen *.TXT.

GrußformelHomepage


  

Betrifft: AW: text Datei schneller importieren
von: Sascha
Geschrieben am: 28.04.2012 11:56:45

hallo hajo,

wie meinst du das mit datei öffnen?

- wichtig beim einlesen der daten ist, das jeder semikolon getrennte wert auch in eine zelle der tabelle geschrieben wird,

lieben gruß
sascha


  

Betrifft: AW: text Datei schneller importieren
von: Hajo_Zi
Geschrieben am: 28.04.2012 12:01:14

Hallo Sascha,

bei Excel Gut solltestz Du den Öffnen Dialog kennen. Da kann man als Dateityp *.TXT eingeben und dann Datei auswählen und öffnen. Ich habe jetzt so eine Datei nicht. Vielleicht anschließend noch Text in Spalten.

Gruß Hajo


  

Betrifft: AW: text Datei schneller importieren
von: Sascha
Geschrieben am: 28.04.2012 12:13:11

hallo hajo,

hmm..."gut" ist dann wohl subjektiv zu verstehen (wird dann zukünftig auf bescheiden abgeändert) :)

ne kenn ich so leider nicht...muss ich mich mal schlau machen, wie ich den funktionsablauf mit
dem "öffnen dialog" verbessern kann.

vielen dank für deine hilfe

liebe grüße
sascha


  

Betrifft: AW: text Datei schneller importieren
von: Sascha
Geschrieben am: 28.04.2012 12:38:21

hallo hajo,

hab jetzt mal versucht das problem mittels makrorecorder anzugehen, der ablauf funktioniert dabei auch super schnell :)

folgender code hat mir excel ausgegeben

Sub import()
'
' import Makro

    With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\TestOrdner1\Baum58.txt", Destination:= _
Range("$A$1"))
        .Name = "Scan_88888_120517"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  _
1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("N7").Select
End Sub
Frage: der Pfad zur datei steht in zelle R20, wie muss ich den code anpassen, damit er aus dieser zelle liest?

lieben gruß
sascha


  

Betrifft: AW: text Datei schneller importieren
von: Hajo_Zi
Geschrieben am: 28.04.2012 14:00:03

Hallo Sascha,

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Range("R20") & &"Baum58.txt", Destination:= _
Range("$A$1"))

Gruß Hajo


  

Betrifft: AW: text Datei schneller importieren
von: Sascha
Geschrieben am: 30.04.2012 15:29:48

hallo hajo,

ja super, vielen dank dafür.

mit besten grüßen
sascha