Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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
Inhaltsverzeichnis

Textdatei Import nach Excel

Textdatei Import nach Excel
Bernd
Hallo,
ich möchte gerne eine Textdatei mit mehr als 66000 Teilen und 11 Spalten regelmäßig in eine Exceldatei importieren in die Spalten A-K. In Spalte L der Exceldatei stehen Formeln, die nicht verändert werden sollten. Der Text-Konvertierung sollte Windows (ANSI) benutzen.
Viele Grüße
Bernd
AW: Textdatei Import nach Excel
30.09.2010 11:29:54
Tino
Hallo,
kannst dies mal testen.
Deine Excel- Datei sollte aber im xlsm Format gespeichert vorliegen wegen der anzahl Zeilen.
Du müsstest dies im Code noch anpassen.
Pfad, erste Zeile, erste Spalte, Text Delimiter (Trennzeichen für Spalten im Text)
Sub txt_ReadLine()
Dim meText() As String, sLine As String, sFilename As String
Dim lngRow As Long, lngCol As Long
Dim F As Long

  
  'Delimiter angeben 
  Const strDelimiter$ = ";"
  'Pfad 
  sFilename = "C:\Temp\Test.txt"
  'erste Zeile: erste Spalte 
  lngRow = 2: lngCol = 1
  
  If Dir$(sFilename) <> "" Then
    meEvent False
    'Sicherheit wegen Event Abschaltung 
    On Error GoTo Fehler:
    'Bereich leer machen für neue Daten 
    Range(Cells(2, 1), Cells(Rows.Count, 11)).ClearContents
    
    F = FreeFile
    Open sFilename For Input As #F
    
    While Not EOF(F)
        Line Input #F, sLine
        meText = Split(sLine, strDelimiter)
        Cells(lngRow, lngCol).Resize(, Ubound(meText) + 1) = meText
        lngRow = lngRow + 1
    Wend
    Close #F
    meEvent True
  End If

Exit Sub

Fehler:
On Error Resume Next
Close #F
meEvent True
MsgBox "Fehler aufgetreten!", vbCritical
On Error GoTo 0
End Sub

Sub meEvent(boo_On_Off As Boolean)
Static int_xlCalc As Integer
With Application
  int_xlCalc = IIf(boo_On_Off, int_xlCalc, .Calculation)
 .Calculation = IIf(boo_On_Off, int_xlCalc, xlCalculationManual)
 .ScreenUpdating = boo_On_Off
 .EnableEvents = boo_On_Off
End With
End Sub
Gruß Tino
Anzeige
AW: Textdatei Import nach Excel
01.10.2010 14:52:21
Bernd
Hallo,
leider gibt es mit dem Format doch irgendwie Probleme. Pro Spalte sollte eigentlich ein Wert stehen, Trennzeichen im Original ist wohl ein Leerzeichen. Ich habe dann Const strDelimiter$ = " " angepasst, aber irgendwie verschießt es die Spalten.
Wenn ich den Importvorgang aufzeichne, erhalte ich folgenden Code:
Origin:=xlWindows _
, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array( _
4, 1), Array(9, 1), Array(20, 1), Array(36, 1), Array(44, 1), Array(64, 1), Array(73, 1), _
Array(96, 1), Array(113, 1), Array(125, 1)), TrailingMinusNumbers:=True
Kann man daraus erkennen, wie der Code in Deinem Makro zu modifizieren ist? Wegen der vielen Zeilen: Ehrlich gesagt ist Excel 2007 gerader eher noch Neuland für mich. Die meiste Zeit über arbeite ich mit 2003 und die besagte Textdatei war bis vor kurzen noch gerade so "klein", dass das Einlesen mit 2003 geklappt hat. Am liebsten wäre mir ehrlich gesagt, wenn man die Datei auch weiterhin in Excel 2003 einliest, von mir aus auch in 2 Dateien. Makro 1 sollte die ersten 50000 Zeilen einlesen und Makro 2 die restlichen Zeilen. Kann man das in dem Code irgendwo einbauen?
Achtung, folgende Alternative ist mir gerade noch eingefallen:
Super wäre natürlich folgendes: Die Datei besteht aus ca 100 Blöcken, der "Name" des jeweiligen Blocks ist die Kombination aus Spalte A und K und numerisch. Ich benötige letztenendes aber maximal 3 Zeilen jeden Blockes , so dass die Datei am Ende eigentlich nur aus 300 Zeilen besteht. Die gesamte Problematik des Zeilenlimits würde also wegfallen. Ist sowas über ein Importmakro evtl. auch lösbar?
Viele Grüße
Bernd
Anzeige
AW: Textdatei Import nach Excel
01.10.2010 19:22:09
Jürgen
Hallo Bernd,
Du hast keine Trennzeichen-getrennte Datei, sondern eine mit fester Satzlänge (aus Deinem Makro-Rekorder-Code: DataType:=xlFixedWidth). Somit wird der Ansatz, die Zeilen mit Split() und einem Trennzeichen aufzuteilen nicht funktionieren. Wenn Du den VBA-Ansatz weiter verfolgen möchtest, wird das auf ein Auseinanderschneiden der eingelesenen Zeilen mit Left(), Right() und Mid() hinauslaufen. Das herausfiltern der benötigten Zeilen kan auch funktionieren, sofern es ein hinreichendes Kriterium gibt (immer die ersten 3, alle mit Wert x an Stelle y etc.).
Damit wäre die Lösung passgenau - bis zur nächsten Änderung, die wieder Anpassungen in VBA erfordert. Warum verzichtest Du bei der Lösung nicht auf VBA und verwendest einfach die Mittel, die Excel standardmäßig mitliefert? In Excel 2003 kannst Du doch per "Daten - Externe Daten importieren - Daten importieren" einem Datenimport anlegen. Ebenso in Excel 2007 (wegen der Zeilenzahl wohl dann die Version der Wahl), dort unter "Daten - externe Daten abrufen". Einmal angelegt holst Du die neuen Daten per Rechtsklick und "Daten aktualisieren". Und die Formeln rechts neben dem Importbereich kannst Du auch passend zu den importierten Zeilen ausfüllen lassen (siehe Rechtsklick in Datenbereich und "Datenbereichseigenschaften"). Und der (anpassbare) Name des Importbereichs wird bei der Datenaktualisierung automatisch als Bereichsname den importierten Daten zugewiesen. Er ist somit stets aktuell und ermöglicht Dir so Formeln zu entwickeln, die nie wieder auf den neuen Datenbereich angepasst werden müssen.
Gruß, Jürgen
Anzeige
kannst Du mal eine Beispiel TxT-File laden? oT.
02.10.2010 11:10:45
Tino
AW: kannst Du mal eine Beispiel TxT-File laden? oT
02.10.2010 11:42:30
Bernd

Hallo,
Ich muss das mal am Montag prüfen, ob ich das so hinbekomme.
Gruß, Bernd
AW: kannst Du mal eine Beispiel TxT-File laden? oT
03.10.2010 17:22:03
Hajo_Zi
Hallo Bernd,
ich lese das doch bestimmz Richtig "Du willst das prüfen" Warum dann offen?

AW: kannst Du mal eine Beispiel TxT-File laden? oT
03.10.2010 20:49:55
Bernd
Hallo Hajo,
Da es zwei verschiedene Lösungsansätze gibt (vba und Excel nativ) und ich noch eine Beispieltextdatei am Montag hochladen möchte, war ich der Ansicht, das man die Anfrage noch offen lassen kann. Gibt es eigentlich diesbezüglich irgendwo im Forum ein Regelwerk, gegen das ich evtl. verstosse? Wen dem so sei, werde ich den thread sofort auf "gelöst" setzen, ansonsten bitte ich doch um ein wenig Tolerenz.
MfG
Bernd
Anzeige
AW: kannst Du mal eine Beispiel TxT-File laden? oT
03.10.2010 20:55:03
Hajo_Zi
Hallo Bernd,
aus Deinenm letzten Beitrag
Hallo,
Ich muss das mal am Montag prüfen, ob ich das so hinbekomme.
Gruß, Bernd

konnte man nich rauslesen warum der offen ist. Wie Du selber schreibst willst Du eine Datei hochladen, daraus könnte man Schlußfolgern Du möchtest eine Lösung für diese Datei. Da keine Deine Datei jetzt schon sieht vermute ich kann auch keiner eine Lösung erstellen. Also stelle den Beitrag auf offen, wenn Du die Datei hochgeladen hast.
Gruß Hajo
Anzeige
AW: kannst Du mal eine Beispiel TxT-File laden? oT
03.10.2010 20:59:05
Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige