Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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

TXT Import

TXT Import
14.10.2016 08:46:58
Dieter
Hallo,
Meine Aufgabenstellung ist aus bestimmten Text Dateien die Daten ins Excel zu importieren um Auswertungen anzufertigen.
Jetzt funktioniert es mit angehängtem VBA Code bereits soweit,
daß ich die Daten der gewünschten Files in der richtigen Formatierung ins Excel bekomme.
Jedoch wird jedes File in ein neues Arbeitsblatt kopiert.
Kann mir bitte jemand dabei helfen, daß alle zu imporitierenden Daten untereinander ins aktuelle Arbeitsblatt kopiert werden.
Vielen Dank im Voraus
Option Explicit
Public Sub Main()
Dim intFiles As Integer
Dim varFiles As Variant
On Error GoTo Fin
ChDrive "C:"
ChDir "C:\"
varFiles = Application.GetOpenFilename( _
FileFilter:="Alarme, *Alarme*.txt,Auslastung, *Auslastung*.txt,Alle Dateien, *.*", _
MultiSelect:=True)
If Not VarType(varFiles) = vbBoolean Then
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
For intFiles = 1 To UBound(varFiles)
Workbooks.Open varFiles(intFiles), UpdateLinks:=False
Next intFiles
Else
MsgBox "Abbruch!", vbInformation, "Dateiauswahl!"
End If
Fin:
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT Import
14.10.2016 09:24:37
baschti007
Hey Dieter wenn in deiner TXT als Trennzeichen Tab genutzt wird dann so
Gruß Basti

Public Sub Main()
Dim intFiles As Integer
Dim varFiles As Variant
Dim r As Long, c As Long
On Error GoTo Fin
ChDrive "C:"
ChDir "C:\Bastian"
r = 1
varFiles = Application.GetOpenFilename( _
FileFilter:="Alarme, *Alarme*.txt,Auslastung, *Auslastung*.txt,Alle Dateien, *.*", _
MultiSelect:=True)
If Not VarType(varFiles) = vbBoolean Then
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
For intFiles = 1 To UBound(varFiles)
Open varFiles(intFiles) For Input As #1
Do While Not EOF(1)
Line Input #1, buffer
SplitBuffer = Split(buffer, vbTab)
For c = LBound(SplitBuffer) To UBound(SplitBuffer)
ActiveSheet.Cells(r, c + 1) = SplitBuffer(c)
Next
r = r + 1
Loop
Close #1    ' Datei schließen
Next intFiles
Else
MsgBox "Abbruch!", vbInformation, "Dateiauswahl!"
End If
Fin:
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
Close #1    ' Datei schließen
End With
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub

Anzeige
AW: TXT Import
14.10.2016 09:58:47
Dieter
Hallo Basti,
vielen Dank. Habs durch Semikolon ersetzt und funktioniert einwandfrei.
Grüße
Dieter
AW: TXT Import
17.10.2016 07:04:16
Dieter
Hallo Basti,
hätte da noch eine Bitte.
Beim Auswählen der Datei kann ich zwischen Alarme, Auslastung und Alle Dateien wählen.
Hast du eine Idee, wie man hier für die Auswahl verschiedene Tabellenblätter zuweisen kann.
Sprich Alarme Tabellenblatt1, Auslastung Tabellenblatt2 und Alle Dateien Tabellenblatt3.
Danke
Dieter
AW: TXT Import
17.10.2016 07:12:22
baschti007
Ohh Das kann ich dir leider nicht beantworten =(
Gruß Basti
AW: TXT Import
19.10.2016 15:40:18
Michael
Hi,
ich eigentlich auch nicht - man könnte aber das Array erst mal analysieren:
Option Explicit
Public Sub Main()
Dim intFiles As Integer
Dim varFiles As Variant
Dim r As Long, c As Long
Dim rn&(1 To 3), ShNr, Dtyp&
On Error GoTo Fin
ShNr = Array(1, 2, 3) ' hier die Blattnummern oder auch Namen
ChDrive "C:"
ChDir "C:\Bastian"
r = 1
varFiles = Application.GetOpenFilename( _
FileFilter:="Alarme, *Alarme*.txt,Auslastung, *Auslastung*.txt,Alle Dateien, *.*", _
MultiSelect:=True)
' mit *.* würde ich aufpassen; lieber *.txt
If Not VarType(varFiles) = vbBoolean Then
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
For intFiles = 1 To UBound(varFiles)
If InStr(varFiles(intFiles), "Alarme") > 0 Then
rn(1) = rn(1) + 1
ElseIf InStr(varFiles(intFiles), "Auslastung") > 0 Then
rn(2) = rn(2) + 1
Else: rn(3) = rn(3) + 1
End If
Next
MsgBox "rn1: " & rn(1) & " rn2: " & rn(2) & " rn3: " & rn(3)
' Hier entweder die Entscheidung für ein (einzelnes) Tabellenblatt
' z.B. Dtyp=2
' oder auch eine Verteilung auf mehrere Blätter - hier ausgeführt:
rn(1) = 1: rn(2) = 1: rn(3) = 1 ' Zeilennummern initialisieren
For intFiles = 1 To UBound(varFiles)
If InStr(varFiles(intFiles), "Alarme") > 0 Then
Dtyp = 1
ElseIf InStr(varFiles(intFiles), "Auslastung") > 0 Then
Dtyp = 2
Else: Dtyp = 3
End If
Open varFiles(intFiles) For Input As #1
Do While Not EOF(1)
Line Input #1, buffer
SplitBuffer = Split(buffer, vbTab)
For c = LBound(SplitBuffer) To UBound(SplitBuffer)
Sheets(ShNr(Dtyp)).Cells(r(Dtyp), c + 1) = SplitBuffer(c)
'           ActiveSheet.Cells(r, c + 1) = SplitBuffer(c)
Next
r(Dtyp) = r(Dtyp) + 1
Loop
Close #1    ' Datei schließen
Next intFiles
Else
MsgBox "Abbruch!", vbInformation, "Dateiauswahl!"
End If
Fin:
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
Close #1    ' Datei schließen ob es diese Zeile braucht?
' falls ein Fehler beim Öffnen passiert ist, braucht sie nicht geschlossen werden,
' und falls ein Fehler beim Schließen war, wird es hier auch nicht gehen.
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Probier's halt mal.
Schöne Grüße,
Michael
Anzeige
AW: TXT Import
20.10.2016 08:54:06
Dieter
Hallo Michael,
danke für den super Ansatz und die Hinweise.
Grüße
Didi
gern geschehen,
20.10.2016 14:28:23
Michael
Hallo Dieter,
danke für die Rückmeldung.
Happy Exceling,
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige