Ascii Datei in Excel Tabelle schreiben

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Schmidt121.

    Ascii Datei in Excel Tabelle schreiben

    Moin, bin neu hier und hab gleich mal ne (finde ich zumindest) schwierige Frage.

    Ich möchte Ascii Dateien in Excel Tabellen einlesen.

    Es sind ca 1000 Ascii Dateien wo Werte drinne stehen.

    Es gibt 6 unterschiedliche Werte die in den Dateien stehen. Diese Werte müssen aufgeteilt werden in 6 Tabellen.

    Die Werte müssen an eine ganz bestimmte Stelle in den Tabellen hinterher stehen.

    Aus dem Dateinamen der Ascii Dateien kann man ersehen, an welche stelle die Werte eingetragen werden müssen.

    Beispielname: 700_250_.......1.1.1 oder z.b. 700_250_.....1.1.2

    Die Letzte Zahl gibt an in welche Tabelle die Werte müssen, und die ersten geben an, an welcher Stelle in der Tabelle die Werte stehen müssen.

    Ich habe leider noch nicht so viel erfahrung mit VB, deshalb hoffe ich auf eure Hilfe, um diese Daten aus den Dateien nich immer von Hand eintragen zu müssen. Für die 1000 Werte brauch ich nämlich nen knappen Tag, und da sich mir diese Aufgabe öfters stellt, währe da ne Zeitersparniss schon cool.

    Thx im voraus.

    MfG
    Hallo Schmidt121,

    das solltest du mal so erklären, dass ein jeder weiß, was du exakt vorhast...

    Also generell kann es sinnvoll sein mit Stringebearbeitungsfunktionen wie Left, Right, Mid oder Split zu arbeiten. Näheres erfährst du in der VB-Hilfe.

    Wenn du schnelle Hilfe erwartest, dann schreibe z.B. so eine Frage:
    Der Dateiname lautet 12_5_Text_Tabellenname

    Tabellenname gibt die zu verwendene Tabelle an
    12_5 sagt, dass in der Zelle(12,5) geschrieben werden soll
    Text ist der Text, welcher in die Zelle eingetragen werden soll.
    So wüsste jeder, was du vorhast

    Gruß Markus
    Ok, dann noch mal

    Der Name lautet der Ascii Datei lautet:

    700_250_Text_1.ascii

    die 700 gibt an in welche Spalte der Wert geschrieben werden soll

    Die 250 gibt die Zeile an

    Der Text ist variabel(hat also nix mit dem einzutragenden zu tun)

    Die 1 gibt an, in welche der Tabellen, der Wert geschrieben wird.

    In der Ascii Datei stehen die Werte drin, die in die Tabelle übertragen werden sollen, wobei zu beachten ist, das der letzte Wert der Wert ist, der übertragen werden soll.

    Der Inhalt der Ascii Datei sieht wie folgt aus


    ETASAsciiItemFile record CrLf Tab
    sampleCount 2
    time fupsrl_w_mitt
    f8 f8
    "-" "-"
    20,005818405844 0,0740193397521973
    20,0556265040853 0,0740192921322183


    Der einzutragende Wert in die Tabelle währe in diesem Fall: 0,0740192921322183


    Ich hoffe das es so besser verständlich ist.

    PS.: Ist es für einen Menschen ohne großartige VB erfahrungen, überhaupt möglich ein so komplexes Makro zu schreiben? Ich habe nämlich nur ein wehnig Java und C++ erfahrung, und bin nicht gerade ein Programmierass^^
    Hallo Schmidt121,

    schau mal, ist aber recht schnell zusammen geschustert

    Visual Basic-Quellcode

    1. 'Unter Verweise muss die
    2. 'Microsoft Scriting Runtime eingebunden sein
    3. Sub test()
    4. 'Objekte für Zugriff auf die Dateien
    5. Dim oFSO As FileSystemObject
    6. Dim oFd As Folder
    7. Dim oFl As File
    8. 'Objekt zum Öffnen einer Textdatei
    9. Dim oTextStream As TextStream
    10. 'Zähler
    11. Dim i As Long
    12. 'Variablen für den Zugriff auf die Zelle
    13. Dim lngRow As Long, lngColumn As Long, lngSheet As Long
    14. Dim dblValue As Double
    15. 'Variable zur Verarbeitung der Strings
    16. Dim strText As String
    17. Dim strLine As String
    18. Dim arr As Variant
    19. Set oFSO = New FileSystemObject
    20. 'zu durchsuchender Pfad
    21. Set oFd = oFSO.GetFolder("C:\Test\")
    22. 'Alles Dateien des Ordners werden durchlaufen (mit Filter)
    23. For Each oFl In oFd.Files
    24. If Right(oFl.Name, Len(oFl.Name) - InStrRev(oFl.Name, ".")) = "ascii" Then
    25. Set oTextStream = oFSO.OpenTextFile(oFl.Path)
    26. strText = oTextStream.ReadAll
    27. oTextStream.Close
    28. Set oTextStream = Nothing
    29. 'Letzte Zeile extrahieren
    30. arr = Split(strText, vbCrLf)
    31. strLine = arr(UBound(arr))
    32. 'Letzte Zahl der Zeile extrahieren
    33. arr = Split(strLine, " ")
    34. 'evlt. muss die "-1" weg, je nachdem, ob am Ende der Zeile ein Leerzeichen steht
    35. dblVal = CDbl(arr(UBound(arr) - 1))
    36. 'Bestimmung der Position im Workbook
    37. arr = Split(oFl.Name, "_")
    38. lngColumn = CLng(arr(0))
    39. lngRow = CLng(arr(1))
    40. lngSheet = CLng(Left(arr(3), InStr(1, arr(3), ".")))
    41. 'Eintrag im Workbook
    42. ActiveWorkbook.Worksheets(lngSheet).Cells(lngRow, lngColumn) = dblVal
    43. End If
    44. Next oFl
    45. Set oFl = Nothing: Set oFd = Nothing: Set oFSO = Nothing
    46. End Sub


    als Anfänger ist so etwas aber kaum zu empfehlen.

    Gruß Markus
    Thx, werde mal schaun ob ich da was von verstehe. Werd mir da wohl erst mal son paar Grundlagen aneignen, und das mal testen.

    Aber da VB vollkommen anders vom Aufbau bzw, völlig andere deklarationen usw. hat als Java bzw c++, muss ich mir da erst mal die Grundlaen aneignen, um den Quelltext vollständig zu verstehen.

    Vielen dank für die schnelle Hilfe.

    Gruß Schmidt121