Zahlen aus Datei Auslesen und in Excel Spalten einordnen

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Zahlen aus Datei Auslesen und in Excel Spalten einordnen

    Hallo,


    ich habe folgende beliebig lange Datei, in der die folgenden ersten 2 Steps mal aufgelistet sind (ist eine Datei ohne Dateiendung - vlt ist das auch schon das Problem)

    dt of cycle 1 is controlled by solid element 38505

    time........................... 0.00000E+000
    time step...................... 4.71656E-009
    kinetic energy................. 0.00000E+000
    internal energy................ 1.00000E-020
    spring and damper energy....... 1.00000E-020
    hourglass energy .............. 0.00000E+000
    system damping energy.......... 0.00000E+000
    sliding interface energy....... 0.00000E+000
    external work.................. 0.00000E+000
    eroded kinetic energy.......... 0.00000E+000
    eroded internal energy......... 0.00000E+000
    total energy................... 1.00000E-020
    total energy / initial energy.. 1.00000E+000
    energy ratio w/o eroded energy. 1.00000E+000
    global x velocity.............. 0.00000E+000
    global y velocity.............. 0.00000E+000
    global z velocity.............. 0.00000E+000
    time per zone cycle.(nanosec).. 0

    dt of cycle 25443 is controlled by solid element 17121

    time........................... 1.19999E-004
    time step...................... 4.71656E-009
    kinetic energy................. 7.21069E-005
    internal energy................ 6.37156E-004
    spring and damper energy....... 1.00000E-020
    hourglass energy .............. 1.32979E-004
    system damping energy.......... 1.74355E-004
    sliding interface energy....... 4.28727E-006
    external work.................. 1.02093E-003
    eroded kinetic energy.......... 0.00000E+000
    eroded internal energy......... 0.00000E+000
    total energy................... 1.02088E-003
    total energy / initial energy.. 9.99954E-001
    energy ratio w/o eroded energy. 9.99954E-001
    global x velocity.............. -1.21242E-001
    global y velocity.............. -6.43292E-002
    global z velocity.............. -5.80735E+000
    time per zone cycle.(nanosec).. 0

    Ich möchte nun die Zeit, kinetische, innnere, etc. Energie eines jeden Steps in eine Zeile schreiben mit den jeweiligen Spaltenüberschriften wie im Code ersichtlich.

    Ich bin blutiger anfänger - von daher wundert euch bitte nicht über die eventuelle Schwachsinnigkeit des Codes - aber VB ist irgendwie für einen Einsteiger verwirrend.

    Mein bisheriger - nicht arbeitender Code:

    Sub textlesen()
    Dim zeile As String
    Dim r As Long
    Dim s As Long

    Open "C:\vb_test_Auslesen\glstat" For Input As #1

    Cells(1, 1).Formula = "time"
    Cells(1, 3).Formula = "kin"
    Cells(1, 4).Formula = "internal"
    Cells(1, 5).Formula = "HG"
    Cells(1, 6).Formula = "damp"
    Cells(1, 7).Formula = "total"

    s = 1

    Do While Not EOF(1)

    If s = 1 Then
    r = Cells(Rows.Count, 1).End(xlUp).Row + 1 'next free row
    End If

    Line Input #1, zeile
    If Len(zeile) Then

    If InStr(0, "time..", Left$(zeile, 1), 1) Then
    Print Cells(r, 1), Trim$(Mid$(zeile, 33, 11)); 'Time
    s = 0
    End If

    If InStr(0, "kinetic energy..", Left$(zeile, 1), 1) Then
    Print Cells(r, 3), Trim$(Mid$(zeile, 33, 11)); 'kinetic energy
    s = 0
    End If

    If InStr(0, "internal energy..", Left$(zeile, 1), 1) Then
    Print Cells(r, 4), Trim$(Mid$(zeile, 33, 11)); 'internal energy
    s = 0
    End If

    If InStr(0, "hourglass energy ..", Left$(zeile, 1), 1) Then
    Print Cells(r, 5), Trim$(Mid$(zeile, 33, 11)); 'hourglass energy
    s = 0
    End If

    If InStr(0, "system damping energy..", Left$(zeile, 1), 1) Then
    Print Cells(r, 6), Trim$(Mid$(zeile, 33, 11)); 'damping energy..
    s = 0
    End If

    If InStr(0, "total energy..", Left$(zeile, 1), 1) Then
    Print Cells(r, 7), Trim$(Mid$(zeile, 33, 11)); 'total energy
    s = 1
    End If

    End If

    Loop
    Close
    End Sub

    Bin jeder Hilfe dankbar - desshalb von mir schon mal ein großes Danke im voraus.

    * Topic verschoben *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Hallo Snaptu,

    danke für deine schnelle Antwort und entschuldige bitte meine späte Reaktion.

    Habe es bis jetzt aus Excel heraus mit Visual Basic gestartet. Wäre gut, wenn das zwecks des Datenaustausches mit anderen über die Datei *.xlsm auch einfach so bleibt.

    Hier nochmal mein Code:

    Visual Basic-Quellcode

    1. Sub textlesen()
    2. Dim zeile As String
    3. Dim r As Long
    4. Dim s As Long
    5. Open "C:\Dokumente und Einstellungen\student\Desktop\Kästner\vb_test_Auslesen\glstat" For Input As #1
    6. Cells(1, 1).Formula = "time"
    7. Cells(1, 3).Formula = "kin"
    8. Cells(1, 4).Formula = "internal"
    9. Cells(1, 5).Formula = "HG"
    10. Cells(1, 6).Formula = "damp"
    11. Cells(1, 7).Formula = "total"
    12. s = 1
    13. Do While Not EOF(1)
    14. If s = 1 Then
    15. r = Cells(Rows.Count, 1).End(xlUp).Row + 1 'next free row
    16. End If
    17. Line Input #1, zeile
    18. If Len(zeile) Then
    19. If InStr(0, "time..", Left$(zeile, 1), 1) Then
    20. Print Cells(r, 1), Trim$(Mid$(zeile, 33, 11)); 'Time
    21. s = 0
    22. End If
    23. If InStr(0, "kinetic energy..", Left$(zeile, 1), 1) Then
    24. Print Cells(r, 3), Trim$(Mid$(zeile, 33, 11)); 'kinetic energy
    25. s = 0
    26. End If
    27. If InStr(0, "internal energy..", Left$(zeile, 1), 1) Then
    28. Print Cells(r, 4), Trim$(Mid$(zeile, 33, 11)); 'internal energy
    29. s = 0
    30. End If
    31. If InStr(0, "hourglass energy ..", Left$(zeile, 1), 1) Then
    32. Print Cells(r, 5), Trim$(Mid$(zeile, 33, 11)); 'hourglass energy
    33. s = 0
    34. End If
    35. If InStr(0, "system damping energy..", Left$(zeile, 1), 1) Then
    36. Print Cells(r, 6), Trim$(Mid$(zeile, 33, 11)); 'damping energy..
    37. s = 0
    38. End If
    39. If InStr(0, "total energy..", Left$(zeile, 1), 1) Then
    40. Print Cells(r, 7), Trim$(Mid$(zeile, 33, 11)); 'total energy
    41. s = 1
    42. End If
    43. End If
    44. Loop
    45. Close
    46. End Sub
    Danke ;) Du hättest deinen ersten Beitrag rechts unten über bearbeiten so umschreiben können und nicht nochmal alles posten, aber is ja egal jetzt ;)

    Ah, OK. Dann gehört dein Beitrag aber nicht zu VB6 oder .NET sondern dann gehörst du in den Bereich VBA und das beherrsche ich leider nicht.
    Gibt aber einige nette User die das können und dir sicher weiterhelfen.

    Ich lass dein Problem einmal verschieben.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Ich glaube es geht schon beim Öffnen der Datei los.

    Laufzeitfheler '5'
    Ungültiger Prozeduraufruf oder ungültiges Argument

    Die Hilfe dazu kann man eigentlich vergessen. In welcher Zeile ein Fehler ist, wird mir ja auch nicht angezeigt.

    Kaeste89 schrieb:

    Ich glaube es geht schon beim Öffnen der Datei los.
    Das glaube ich weniger.
    Da würde ein "Pfad nicht gefunden" oder "Datei nicht gefunden" als Laufzeitfehler kommen.

    Aber beim Programmieren ist "glauben" normalerweise wenig zielführend.
    Wo bleibt denn der Debugger stehen?
    Im Zweifel den Code einfach mal schrittweise durchgehen.

    In welchem Context steht denn der Code?
    Im Programmbereich eines Tabellenblatts oder in einem Modul?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --