[b]Option Explicit
Sub Datei_einlesen()
'------------------------------
Dim txtlines As Long
Dim i As Long
Dim n As Long
Dim WorkbookName As Workbook
Dim ActiveSheetName As String
'Für Office97 muss das Array TextArr als String definiert werden
Dim textArr As Variant
Dim dataFitting
Dim Anzahl_Blätter As Integer
Dim Text1 As String
Dim ReadFile As String
'Variabel "Anzahl_Blätter" auf den Wert 1 setzen
Anzahl_Blätter = 1
'Dialog öffnen auf Basis von *.dat Files
ReadFile = Application.GetOpenFilename("DAT Files (*.*),")
'Wenn Abbruchtraste beatätigt wurde
On Error GoTo Weiter
If ReadFile = False Then Exit Sub
Weiter:
'Leerblatt einfügen
Sheets.Add Before:=Sheets(1)
Sheets(1).Name = "Leer"
'Schliessen falls Datei bereits offen
Close #1
'------------ Anzahl Zeilen ermitteln ------------------------------
'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.
Line Input #1, Text1 ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'------------- Daten in eine Array-Variable einlesen ---------------
'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)
If txtlines <= 32000 Then
'Einlesen der Dateien in das Array
For i = 0 To txtlines - 1
Line Input #1, textArr(i)
Next i
Else
MsgBox "Da Datenmenge über 32000 Zeilen, wird nur jeder 2. Wert eingelesen", vbInformation, "Info..."
'Einlesen der Dateien in das Array
For i = 0 To txtlines - 1 Step 2
Line Input #1, textArr(i)
Next i
End If
Close #1
Application.ScreenUpdating = False
'Arbeitsmappe erstellen und zuweisen
Set WorkbookName = ActiveWorkbook
'Namen vergeben
Worksheets(1).Name = "Auswertung von Zeile 1"
ActiveSheetName = WorkbookName.Worksheets(1).Name
'Daten in aktuelles Sheet schreiben
n = 1
'------------- Daten in Tabellenblätter eintragen ---------------
If txtlines <= 32000 Then
For i = 1 To txtlines
Application.StatusBar = "Datensatz " & i & " von " & txtlines & " wird eingelesen"
'Neue Tabelle anlegen wenn Zelle 65536 erreicht wurde
If n Mod 65536 = 0 Then
Anzahl_Blätter = Anzahl_Blätter + 1
Application.StatusBar = "Datentrennung wird vorgenommen"
dataFitting = False
WorkbookName.Worksheets.Add After:=ActiveSheet
ActiveSheet.Name = "Auswertung von Zeile " & i
ActiveSheetName = ActiveSheet.Name
Sheets(Anzahl_Blätter - 1).Range("A65425:A65536").Copy Destination:= _
Sheets("Auswertung von Zeile " & i).Range("A1")
n = Sheets("Auswertung von Zeile " & i).Range("A65536").End(xlUp).Offset(1, 0).Row
End If
'Text aus Array auslesen und eintragen
WorkbookName.Worksheets(ActiveSheetName).Cells(n, 1) = textArr(i)
n = n + 1
Next i
Else
For i = 1 To txtlines Step 2
Application.StatusBar = "Datensatz " & i & " von " & txtlines & " wird eingelesen"
'Neue Tabelle anlegen wenn Zelle 65536 erreicht wurde
If n Mod 65536 = 0 Then
Anzahl_Blätter = Anzahl_Blätter + 1
Application.StatusBar = "Datentrennung wird vorgenommen"
dataFitting = False
WorkbookName.Worksheets.Add After:=ActiveSheet
ActiveSheet.Name = "Auswertung von Zeile " & i
ActiveSheetName = ActiveSheet.Name
Sheets(Anzahl_Blätter - 1).Range("A65425:A65536").Copy Destination:= _
Sheets("Auswertung von Zeile " & i).Range("A1")
n = Sheets("Auswertung von Zeile " & i).Range("A65536").End(xlUp).Offset(1, 0).Row
End If
'Text aus Array auslesen und eintragen
WorkbookName.Worksheets(ActiveSheetName).Cells(n, 1) = textArr(i - 1)
n = n + 1
Next i
End If
End Sub[/b]
In einer Zeile in Excel eine Datei hinterlegen
frabias 12.01.2007 - 116 Hits - 2 Antworten
Ich möchte in Excel den Inhalte aller TXT-Dateien eines Verzeichnisses in ein Excel Blatt kopieren.
eexil44 07.02.2007 - 157 Hits - 6 Antworten
txt File einlesen (Feld für Feld) in Excel über VBA
steindesign 23.07.2007 - 84 Hits - 8 Antworten
Mehrere Dateien umbenennen mit Nummerierung
Iscitürk 18.08.2007 - 171 Hits - 2 Antworten
txt - Datei
Andrea26 16.01.2008 - 82 Hits - 3 Antworten