Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
564to568
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
564to568
564to568
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Textdatei einlesen
10.02.2005 08:57:07
Sebastian
Hallo!
Ich habe folgendes Problem:
Ich möchte eine TXT-Datei in Excel über ein Macro öffnen, da ich nicht immer diesen Konvertierungsassistenten haben will.
Die Datei ist auch duch Semikolons gut formatiert, nur wie bring ich das in einem Macro unter, so das er beim öffnen der Datei, die Trennzeichen erkennt?
Kann mir jemand weiterhelfen?
Gruß Sebastian

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei einlesen
Willie
Hallo Sebastian
Zeiche das auf was du machst mit dem MakroRecorder.
Das ist am einfachsten!
mfG
Willie
AW: Textdatei einlesen
10.02.2005 09:08:07
Josef
Hallo Sebastian!
Beim Import brauchst du die Trennzeichen nicht zu ermitteln!
Dazu verwendet man nach dem Import "Text in Spalten" !

Sub Text_Import()
Dim n As Integer
Dim strTemp As String, strFile As String
Dim lRow As Long, i As Long
Dim wks As Worksheet
On Error GoTo ERRORHANDLER
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
Set wks = ActiveSheet
strFile = "D:\Temp\test.txt"
'Import Textfile
Open strFile For Input As #1
Do While Not EOF(1)
lRow = lRow + 1
Input #1, strTemp
wks.Cells(lRow, 1) = strTemp
Loop
Close #1
wks.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1))
wks.Columns.AutoFit
ERRORHANDLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: Textdatei einlesen
10.02.2005 09:16:52
Sebastian
Hallo!
Ich bin nicht so ein VBA Experte, dass ich mit dem Quelltext, richtig was anfangen kann ...
so übernehemn und meinen Pfad angeben funktioniert zumindest nicht.
Trotzdem danke!
AW: Textdatei einlesen
10.02.2005 09:21:31
Josef
Hallo Sebastian!
Und was funktioniert nicht?
Was passiert wenn du den Code laufen lässt?
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
AW: Textdatei einlesen
10.02.2005 09:22:25
Sebastian
Hallo,
es passiert gar nichts!
Gruß Sebastian
AW: Textdatei einlesen
10.02.2005 09:27:35
Josef
Hallo Sebastian!
Dann stimmt dein Pfad oder Dateiname nicht!
Bei mir läuft der Import ohne Probleme.
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: Textdatei einlesen
10.02.2005 09:24:34
Josef
Hallo Sebastian!
Und wenn du den Code im VBE im Einzelschritt abarbeitest (F8)?
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
AW: Textdatei einlesen
10.02.2005 09:29:08
Sebastian
Auch dann passiert nichts!
Kannst ja mal versuchen die Datei die ich hochgeladen habe, mit dem Quelltext zu testen.
Gruß Sebastian
AW: Textdatei einlesen
Willie
Hallo Sebastian
man kann auch jeden Satz einzeln einlesen! mit folgendem Makro

Sub Daten_Einlesen_Spezial()
'Daten aus Textdatei Zeilenweise mit rückfrage einlesen
Dim strText As String, strFile As String, strMeldung As String, strFrage As String
Dim lngLine As Long, lngC As Long, lRow As Long, lngCalc As Long
Dim wks As Worksheet
strFrage = "Soll die folgende Zeile übernommen werden?" & vbLf & "Zeile "
With Application
lngCalc = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error GoTo FEHLER
lRow = 1
Set wks = Sheets("Tabelle3") 'Tabelle in die geschrieben wird - anpassen
strFile = Application.GetOpenFilename("Textdateien (*.txt; *.log; *.dat; *.fre),*.txt; *.log; *.dat; *.fre")
If strFile = "Falsch" Then Exit Sub
Close #1
'Öffnen und die Anzahl der zeilen fesstellen
Open strFile For Input As #1
lngLine = 0
Do While Not EOF(1)
Input #1, strText
lngLine = lngLine + 1
Loop
Close #1 'Schliessen
'Öffnen und Daten schreiben
Open strFile For Input As #1
For lngC = 1 To lngLine
Input #1, strText
strMeldung = MsgBox(strFrage & lngC & " von " & lngLine & vbLf & _
vbLf & strText, vbYesNoCancel + vbQuestion, "Auswahl")
If strMeldung = vbYes Then
Cells(lRow, 1) = strText
lRow = lRow + 1
ElseIf strMeldung = vbCancel Then
Exit For
End If
Next lngC
Close #1
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Semicolon:=True, Space:=True, Other:=True, _
FieldInfo:=Array(1, 1)
wks.Columns.AutoFit
FEHLER:
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = lngCalc
End With
End Sub

Gruß
Willie
Anzeige
AW: Textdatei einlesen
10.02.2005 09:42:26
Sebastian
Hallo,
erst ma danke das du mir helfen willst, allerdings passiert auch bei deiner Variante nichts.
Aber mit Worksbooks.OpenText gehts!
Geht es damit auch, dass die Datei nich in nem neuen Workbook, sondern in nem Tabellenblatt eines bereits geöffneten Workbooks, geöffnet wird?
gruß Sebastian
deine Datei macht bei mir keine Probleme! o.T.
10.02.2005 09:44:29
Josef
Gruß Sepp
AW: deine Datei macht bei mir keine Probleme! o.T
10.02.2005 09:46:18
Sebastian
Bei mir gehts aber leider nicht! Habe auch schon den Pfad überprüft, aber es funktioniert nicht.
ich verzweifle!
Gruß Sebastian
AW: deine Datei macht bei mir keine Probleme! o.T
10.02.2005 09:48:39
Josef
Hallo Sebastian!
Nimm mal das "On Error Goto ERRORHANDLER" raus, wo steigt der Code dann aus?
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Anzeige
AW: deine Datei macht bei mir keine Probleme! o.T
10.02.2005 09:51:22
Sebastian
Wenn ich die Zeile rausnehme passiert auch nichts, auch ein fehler tritt nicht auf!
Gruß Sebastian
Sorry, keine weitere Idee! o.T.
10.02.2005 09:55:19
Josef
Gruß Sepp
AW: Sorry, keine weitere Idee! o.T.
10.02.2005 09:56:46
Sebastian
Tja schade ... schon merkwürdig das es nicht geht.
Trotzdem danke, das du dich so engagiert hast!
Gruß Sebastian
@Sebastian
Muffti
Sitzt hier das Problem vor dem Bildschirm?
AW: @Muffti
10.02.2005 10:05:43
Sebastian
Hallo,
das hoff ich nicht!
Gruß Sebastian
So gehts!
10.02.2005 10:04:54
Sebastian
Hallo nochmal!
Mit dieser variante ... über den Macrorecorder gemacht ... funktioniert es nun doch.
With Sheets(2).QueryTables.Add(Connection:="TEXT;E:\WD050XD.TXT", _
Destination:=Range("'Sheet2'!A1"))
.Name = "WD050XD"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1250
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(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, 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, 1, 1, 1, 1, 1, 1, 1 _
, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Ich freu mich und der Tag ist gerettet!
Gruß Sebastian
Anzeige
AW: Textdatei einlesen
10.02.2005 09:29:52
bst
Morgen Sepp,
1. hmm, was spricht denn gegen Workbooks.OpenText ?
2. Warum "Input #1, strTemp" und nicht "Line Input #1, strTemp" ?
Viele Grüße,
Bernd
AW: Textdatei einlesen
10.02.2005 09:36:31
Sebastian
Hallo,
Workbooks.OpenText klappt!
Geht das auch so, dass das Document nicht in einem neuen Workbook, sondern einem bestimmten
Tabellenblatt geöffnet wird (z.B. auf Tabelle2)?
Gruß Sebastian
AW: Textdatei einlesen
bst
Hi Sebastian,
> Geht das auch so, dass das Document nicht in einem neuen Workbook, sondern einem
> bestimmten Tabellenblatt geöffnet wird (z.B. auf Tabelle2)?
Nein, zumindestens nicht mit OpenText.
Du kannst aber danach das neue Blatt in Deine zuvor aktive Mappe verschieben.

Sub OpenStuff()
Dim actwb As Workbook
Set actwb = ActiveWorkbook
Workbooks.OpenText "d:\temp\test.txt"
ActiveSheet.Move Before:=actwb.Sheets(2)
End Sub

Übrigens, auch ich hatte keine Probleme mit Sepp's Code.
Gruß, Bernd
Anzeige
@Bernd
10.02.2005 09:40:51
Josef
Hallo Bernd!
Zu 1.) Sebastian will den Text ja wohl in eine bestehende Tabelle einfügen und nicht als
neue Arbeitsmappe öffnen. So hab's ich zumindest verstanden!
Zu 2.) Ob "Input" oder "Line Input" geeigneter ist, hängt wohl vom aufbau der Textdatei ab!
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
OT: @Sepp
10.02.2005 09:44:00
bst
Hallo Sepp,
alles klar. Dankeschön.
Bernd
--
while (!world-&gtperfect) {
whine ();
}

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige