PDA

Vollständige Version anzeigen : Einlesen von .txt mittels VBA


mister_bean
26.07.2012, 08:29
hallo,

ich hab ein kleines Problem mit dem Einlesen einer Text Datei mit Hilfe von VBA! Die .txt-Datei die ich in Excel einlesen/importieren will soll in Tabelle4 angelegt werden. Und die einzulesende Text-Datei heißt Test und ist auf dem Laufwerk D. Dazu hab ich folgenden Code geschrieben. Die fettgeschriebene Zeile bereitet mir Sorgen


Sub Einlesen1()

Dim Pfad As String, lfnNr As Integer, Zeile As String, Inhalt() As String
Dim Ziel As Range

Dim str_ordner As String 'verzeichnis
Dim str_file As String 'dateiname
Dim str_cache As String 'cache
Dim zaehler As Integer 'zaehler
Dim zaehlerende As Integer 'Zaehler ende

Sheets(D:\Test\).Activate
str_cache = Range("B1") '.Text & str_file


'Freie Zelle in Spalte A suchen
Sheets("Tabelle4").Activate
With ThisWorkbook.ActiveSheet
Set Ziel = .Range("A65536").End(xlUp).Offset(1, 0)
If IsEmpty(.Range("A1")) Then Set Ziel = .Range("A1")
End With

'Variablen füllen
Pfad = str_cache
lfnNr = FreeFile

'Prüfen, ob Pfad exisistiert
If Dir(Pfad) = "" Then
MsgBox "DateiPfad nicht vorhanden " & Pfad, , "Mitteilung"
Exit Sub
End If

'Datei öffnen
Open Pfad For Input As #lfnNr

'Weitermachen bis alle Zeilen abgearbeitet
Do While Not EOF(lfnNr)
'Zeile einlesen
Line Input #lfnNr, Zeile
'Wenn Zeile Leer dann mache nichts
If Trim(Zeile) <> "" Then
'Wenn Zeile ein ; enthält weitermachen
If InStr(Zeile, ";") > 0 Then
'Zeile in mehrere Felder auftrennen, Trennzeichen ;
Inhalt = Split(Zeile, ";")
'Übertragen der Felder in freie Zeile
Ziel.Resize(1, UBound(Inhalt)).Value = Inhalt
Else
'Einzelnes Feld übertragen
Ziel.Value = Zeile
End If
'Nächste Zeile auswählen
Set Ziel = Ziel.Offset(1, 0)
End If
Loop
'Datei schließen
Close #lfnNr
'Aufräumen
Set Ziel = Nothing

zaehler = zaehler + 1

End Sub

Würde mich auf jegliche Tipps und Hinweise freuen und vorab schon mal Danke!

Beverly
26.07.2012, 08:45
Hi,

was willst du mit dieser Codezeile denn erreichen? Mit Sheets("....") wird ein Tabellenblatt in einer geöffneten Arbeitsmappe angesprochen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

mister_bean
26.07.2012, 09:15
ok, also müsste ich so etwas wie

Open "D:\Daten\Test.TXT"

oder

strPfad = "D:\Daten\Test.txt"

einbauen?!

Oder wie kann ich es anstellen das die Daten aus der Text-Datei importiert werden???

Beverly
26.07.2012, 10:40
Hi,

versuche es mal so:

Option Explicit
Public Const Pfad = "D:\Test\" ' Variable für den Pfad der Textdatei

Sub einlesen()
Dim arrText() ' Array für die Zeileninhalte der Textdatei
Dim lngZeile As Long
' Textdatei zum Einlesen öffnen
Open Pfad & "Test.txt" For Input As #1
' Schleife bis Dateiende
Do While Not EOF(1)
' Array dimensionieren in Abhängigkeit von der jeweiligen Zeilennummer der Textdatei
ReDim Preserve arrText(lngZeile)
' Text zeilenweise ins Array schreiben
Line Input #1, arrText(lngZeile)
' Zeilenzähler um 1 erhöhen
lngZeile = lngZeile + 1
Loop
' Textdatei schließen
Close #1
' Arrayinhalt in Spalte A eintragen
Cells(1, 1).Resize(UBound(arrText()) + 1) = Application.Transpose(arrText())
' Daten -> Text in Spalten für Spalte A
Columns(1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, TrailingMinusNumbers:=True
End Sub

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

mister_bean
26.07.2012, 12:07
danke für die antwort aber es gibt immer noch probleme mit der anweisung

Open Pfad & "Test.txt" For Input As #1

Beverly
26.07.2012, 12:49
Hi,

und was für Probleme gibt es? Bei mir gibt es keine Probleme.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

mister_bean
26.07.2012, 14:25
Laufzeitfehler 76

Pfad nicht gefunden

Beverly
26.07.2012, 14:49
Hi,

den Pfad musst du natürlich an deine Bedingungen anpassen - bei mir liegt die Datei im Verzeichnis "D:\Test\", deklariert ist der Pfad als Konstante außerhalb der Prozedur.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

mister_bean
26.07.2012, 15:18
in dem verzeichnis lag der fehler!

danke für die große mühe! das ganze bringt mich einen großen schritt weiter!!

mercí!