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

Textdatei importieren (VBA)

Textdatei importieren (VBA)
Daniel
Hallo zusammen,
vlt. könnt ihr mir auf die Sprünge helfen.
Ich exportiere aus einer Excel Datei Datensätze in eine Textdatei, Datenfelder werden mit dem pipe
( | ) getrennt.
Datensatz ist wie folgt aufgebaut
abc|KDNR|1,5|100|...
def|KDNR||50...
Diesen Export lade ich nun in eine bestehende Tabelle.
Import funktionert, leider bekomme ich den Wert '1,5' als Zeichenfolge in die Zelle eingetragen und kann mit diesem Wert nun nicht weiterrechnen.
Kann ich vor dem Import die '1,5' als Wert 'deklarieren' bspw. mit CDbl?
Der Code den ich für den Import hier gefunden habe und verwende:
Sub TextImport()
Dim iRow As Integer, iCol As Integer
Dim sFile As String, sTxt As String
sFile = Range("P1").Value
If Dir(sFile) = "" Then
Beep
MsgBox "Datei wurde nicht gefunden!"
Exit Sub
End If
iRow = 1
iCol = 1
Close
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
Do While InStr(sTxt, "|")
Cells(iRow, iCol).Value = Left(sTxt, InStr(sTxt, "|") - 1)
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, "|"))
iCol = iCol + 1
Loop
Cells(iRow, iCol).Value = sTxt
iRow = iRow + 1
iCol = 1
Loop
Close
End Sub
Muss ich ggf. eine andere Vorgehensweise für den Import verwenden?
Für eine Rücksprache besten Dank im Voraus.
Grüße, Daniel

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textdatei importieren (VBA)
20.02.2012 18:50:18
Josef

Hallo Daniel,
probier es mal so.
Sub TextImport()
  Dim iRow As Integer, iCol As Integer
  Dim sFile As String, sTxt As String
  Dim vntTmp As Variant
  
  sFile = Range("P1").Value
  
  If Dir(sFile) = "" Then
    Beep
    MsgBox "Datei wurde nicht gefunden!"
    Exit Sub
  End If
  
  iRow = 1
  iCol = 1
  
  Open sFile For Input As #1
  Do Until EOF(1)
    Line Input #1, sTxt
    sTxt = Replace(sTxt, ",", ".")
    vntTmp = Split(sTxt, "|")
    vntTmp = Application.Transpose(Application.Transpose(vntTmp))
    Cells(iRow, iCol).Resize(1, UBound(vntTmp, 1)) = vntTmp
    iRow = iRow + 1
  Loop
  Close #1
  
End Sub



« Gruß Sepp »

Anzeige
AW: Textdatei importieren (VBA)
21.02.2012 18:28:47
Daniel
Hallo Sepp,
vielen Dank für deine Hilfe!
Funktioniert einwandfrei!
Es ist so dass ich in dem Datensatz auch Datum habe, diese werden ebenfalls als Zeichenkette in die
Zellen übertragen.
Gibt es hier auch einen ähnlichen Ansatz dafür?
Grüße, Daniel
AW: Textdatei importieren (VBA)
21.02.2012 18:45:04
Josef

Hallo Daniel,
dann so.
Sub TextImport()
  Dim lngRow As Long, lngCol As Long
  Dim sFile As String, sTxt As String
  Dim vntTmp As Variant, vntOut() As Variant
  Dim lngIndex As Long
  
  sFile = Range("P1").Value
  
  If Dir(sFile) = "" Then
    Beep
    MsgBox "Datei wurde nicht gefunden!"
    Exit Sub
  End If
  
  lngRow = 1
  lngCol = 1
  
  Open sFile For Input As #1
  Do Until EOF(1)
    Line Input #1, sTxt
    vntTmp = Split(sTxt, "|")
    Redim vntOut(1 To 1, 1 To UBound(vntTmp) + 1)
    For lngIndex = 0 To UBound(vntTmp)
      If IsDate(vntTmp(lngIndex)) And InStr(1, vntTmp(lngIndex), ",") = 0 Then
        vntOut(1, lngIndex + 1) = CDbl(CDate(vntTmp(lngIndex)))
      ElseIf IsNumeric(vntTmp(lngIndex)) Then
        vntOut(1, lngIndex + 1) = CDbl(vntTmp(lngIndex))
      Else
        vntOut(1, lngIndex + 1) = vntTmp(lngIndex)
      End If
    Next
    Cells(lngRow, lngCol).Resize(1, UBound(vntOut, 2)) = vntOut
    lngRow = lngRow + 1
  Loop
  Close #1
  
End Sub



« Gruß Sepp »

Anzeige
AW: Textdatei importieren (VBA)
22.02.2012 07:55:23
Daniel
Guten Morgen Sepp,
Perfekt!
Besten Dank für deine Hilfe!

Funktioniert einwandfrei!
Schönen Tag zusammen!
Grüße, Daniel

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige