Textdatei einlesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 08:57:07

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

Bild


Betrifft: AW: Textdatei einlesen von: Willie
Geschrieben am: 10.02.2005 09:04:03

Hallo Sebastian

Zeiche das auf was du machst mit dem MakroRecorder.
Das ist am einfachsten!

mfG
Willie


Bild


Betrifft: AW: Textdatei einlesen von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:08:07

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!


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:16:52

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!


Bild


Betrifft: AW: Textdatei einlesen von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:21:31

Hallo Sebastian!

Und was funktioniert nicht?

Was passiert wenn du den Code laufen lässt?


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:22:25

Hallo,

es passiert gar nichts!

Gruß Sebastian


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:24:17

So sieht die Textdatei aus!

https://www.herber.de/bbs/user/17764.txt

Gruß Sebastian


Bild


Betrifft: AW: Textdatei einlesen von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:27:35

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!


Bild


Betrifft: AW: Textdatei einlesen von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:24:34

Hallo Sebastian!

Und wenn du den Code im VBE im Einzelschritt abarbeitest (F8)?


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:29:08

Auch dann passiert nichts!

Kannst ja mal versuchen die Datei die ich hochgeladen habe, mit dem Quelltext zu testen.

Gruß Sebastian


Bild


Betrifft: AW: Textdatei einlesen von: Willie
Geschrieben am: 10.02.2005 09:35:11

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


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:42:26

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


Bild


Betrifft: deine Datei macht bei mir keine Probleme! o.T. von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:44:29

Gruß Sepp


Bild


Betrifft: AW: deine Datei macht bei mir keine Probleme! o.T von: Sebastian
Geschrieben am: 10.02.2005 09:46:18

Bei mir gehts aber leider nicht! Habe auch schon den Pfad überprüft, aber es funktioniert nicht.

ich verzweifle!

Gruß Sebastian


Bild


Betrifft: AW: deine Datei macht bei mir keine Probleme! o.T von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:48:39

Hallo Sebastian!

Nimm mal das "On Error Goto ERRORHANDLER" raus, wo steigt der Code dann aus?


Gruß Sepp

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: deine Datei macht bei mir keine Probleme! o.T von: Sebastian
Geschrieben am: 10.02.2005 09:51:22

Wenn ich die Zeile rausnehme passiert auch nichts, auch ein fehler tritt nicht auf!

Gruß Sebastian


Bild


Betrifft: Sorry, keine weitere Idee! o.T. von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:55:19

Gruß Sepp


Bild


Betrifft: AW: Sorry, keine weitere Idee! o.T. von: Sebastian
Geschrieben am: 10.02.2005 09:56:46

Tja schade ... schon merkwürdig das es nicht geht.

Trotzdem danke, das du dich so engagiert hast!

Gruß Sebastian


Bild


Betrifft: @Sebastian von: Muffti
Geschrieben am: 10.02.2005 10:03:10

Sitzt hier das Problem vor dem Bildschirm?


Bild


Betrifft: AW: @Muffti von: Sebastian
Geschrieben am: 10.02.2005 10:05:43

Hallo,

das hoff ich nicht!

Gruß Sebastian


Bild


Betrifft: So gehts! von: Sebastian
Geschrieben am: 10.02.2005 10:04:54

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


Bild


Betrifft: AW: Textdatei einlesen von: bst
Geschrieben am: 10.02.2005 09:29:52

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


Bild


Betrifft: AW: Textdatei einlesen von: Sebastian
Geschrieben am: 10.02.2005 09:36:31

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


Bild


Betrifft: AW: Textdatei einlesen von: bst
Geschrieben am: 10.02.2005 10:14:39

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


Bild


Betrifft: @Bernd von: Josef Ehrensberger
Geschrieben am: 10.02.2005 09:40:51

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!


Bild


Betrifft: OT: @Sepp von: bst
Geschrieben am: 10.02.2005 09:44:00

Hallo Sepp,

alles klar. Dankeschön.

Bernd
--
while (!world->perfect) {
whine ();
}


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Textdatei einlesen"