Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Textdatei importieren (VBA) | Herbers Excel-Forum


Betrifft: Textdatei importieren (VBA) von: Daniel
Geschrieben am: 20.02.2012 18:17:15

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

  

Betrifft: AW: Textdatei importieren (VBA) von: Josef Ehrensberger
Geschrieben am: 20.02.2012 18:50:18


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 »



  

Betrifft: AW: Textdatei importieren (VBA) von: Daniel
Geschrieben am: 21.02.2012 18:28:47

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


  

Betrifft: AW: Textdatei importieren (VBA) von: Josef Ehrensberger
Geschrieben am: 21.02.2012 18:45:04


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 »



  

Betrifft: AW: Textdatei importieren (VBA) von: Daniel
Geschrieben am: 22.02.2012 07:55:23

Guten Morgen Sepp,

Perfekt!
Besten Dank für deine Hilfe!


Funktioniert einwandfrei!

Schönen Tag zusammen!

Grüße, Daniel


Beiträge aus den Excel-Beispielen zum Thema "Textdatei importieren (VBA)"