Thema Datum  Von Nutzer Rating
Antwort
10.07.2019 16:32:22 Dani
NotSolved
10.07.2019 17:20:17 Gast6564
NotSolved
10.07.2019 17:21:44 Gast5381
NotSolved
10.07.2019 22:58:39 Flotter Feger
NotSolved
10.07.2019 23:46:30 Gast5566
NotSolved
11.07.2019 12:46:03 Dani
NotSolved
11.07.2019 13:08:28 Gast19836
NotSolved
11.07.2019 13:18:09 Dani
NotSolved
Rot Textdatei einlesen und in 2-Dimensionales Array speichern
11.07.2019 15:38:43 Gast65991
NotSolved
15.07.2019 14:53:21 Gast84364
NotSolved
15.07.2019 22:21:12 Flotter Feger
NotSolved

Ansicht des Beitrags:
Von:
Gast65991
Datum:
11.07.2019 15:38:43
Views:
523
Rating: Antwort:
  Ja
Thema:
Textdatei einlesen und in 2-Dimensionales Array speichern

Hallo Dani,

so klappt es mit der geposteten CSV bei mir. Code in der ersten Sub zur Arbeit mit dem Arrtay ab 'Mach hier was mit dem Array musst halt angepasst werden:

 

Option Explicit

Sub TxtFileProcessing()

  Dim fileName As String
  Dim TextArr() As Variant
  Dim i As Long
  
  'Name der einzulesenden CSV-Datei inklusive Pfad
  fileName = "C:\Desktop\text.txt"
  
  'Array passend zur einzulesenden Datei dimensionieren
  ReDim TextArr(GetNumberOfRowsInCsvFile(fileName), 1)
  
  'Neu dimensioniertes Array aus Datei befüllen
  Call ArrayAusCsvDatei(fileName, TextArr())
  
  'Mach hier was mit dem Array
  'Z.B. alle Punkte in den Werten durch Kommas erstzen, um damit rechnen zu können
  For i = 0 To UBound(TextArr)
    TextArr(i, 1) = Replace(TextArr(i, 1), ".", ",")
  Next i
  
  'Sichtkontrolle
  'Anzahl Zeilen im Array und letzte Zeile ausgeben
  MsgBox "Anzahl Zeilen: " & UBound(TextArr) & Chr(13) & "Letzte Zeile Bezeichnung: " & TextArr(UBound(TextArr) - 1, 0) & Chr(13) & "Letzte Zeile Wert: " & TextArr(UBound(TextArr) - 1, 1)
End Sub



Private Sub ArrayAusCsvDatei(strDateiName As String, ByRef arrZielArray() As Variant)
  
  Dim i As Long
  Dim lngDateiZeile As Long
  Dim strZeile As String
  Dim arrZeilenElemente() As String
  
  'CSV öffnen
  Open strDateiName For Input As #1
  
  'Alle Zeilen durchgehen
  Do While Not EOF(1)
    'Aktuelle Zeile aus Datei lesen
    Line Input #1, strZeile
    
    'Aktuell eingelesene Zeile mit Split() an Freizeichen auftrennen
    'und Elemente in das entstehende Array übernehmen
    'Anmerkung: Der Standard Delimeter von Split() ist das Freizeichen
    'und muss nicht explizit angegeben werden
    arrZeilenElemente = Split(strZeile)
    
    'Erstes Element des Splitt-Arrays in erstes Element der
    'aktuellen Zeile des Ergebnis-Arrays schreiben und
    arrZielArray(lngDateiZeile, 0) = arrZeilenElemente(0)
    
    'Letztes Element des Splitt-Arrays in zweites Element der
    'aktuellen Zeile des Ergebnis-Arrays schreiben
    arrZielArray(lngDateiZeile, 1) = arrZeilenElemente(UBound(arrZeilenElemente))
    
    'Zeilenzähler inkrementieren
    lngDateiZeile = lngDateiZeile + 1
  Loop
  Close #1
End Sub



Public Function GetNumberOfRowsInCsvFile(ByVal strFile As String) As Long

'Uwe Fabig - 13.02.2013, 11:30
'Quelle: https://www.xing.com/communities/posts/anzahl-zeilen-einer-textdatei-ermitteln-1002110449

  Dim fso As Object
  Dim ts As Object
  
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set ts = fso.OpenTextFile(strFile)
  
  ts.ReadAll
  GetNumberOfRowsInCsvFile = ts.Line
  
  Set fso = Nothing
  Set ts = Nothing
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
10.07.2019 16:32:22 Dani
NotSolved
10.07.2019 17:20:17 Gast6564
NotSolved
10.07.2019 17:21:44 Gast5381
NotSolved
10.07.2019 22:58:39 Flotter Feger
NotSolved
10.07.2019 23:46:30 Gast5566
NotSolved
11.07.2019 12:46:03 Dani
NotSolved
11.07.2019 13:08:28 Gast19836
NotSolved
11.07.2019 13:18:09 Dani
NotSolved
Rot Textdatei einlesen und in 2-Dimensionales Array speichern
11.07.2019 15:38:43 Gast65991
NotSolved
15.07.2019 14:53:21 Gast84364
NotSolved
15.07.2019 22:21:12 Flotter Feger
NotSolved