Excel-Makro für ASCII-Datenimport

  • Sonstige

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von funzt.

    Excel-Makro für ASCII-Datenimport

    Hallo Leute,

    ich kenne mich leider nicht gut aus mit Visual Basic, aber ich brauche ein Makro das mir automatisch ASCI-Dateien ins Excel 2000 importiert und zwar wie folgt:

    - Dateifenster öffnen nach Datei mit *.asc filtrieren und mich eine Datei auswählen lassen
    - in der Datei sind immer 2 Spalten mit Dezimalzahlen die einen Punkt als Dezimaltrennzeichen haben, zwischen den Spalten sind Leerzeichen zum Trennen, blöderweise ist bei den Zahlen der ersten Spalte die kleiner 100 sind auch noch jeweils ein Leerzeichen vor der ersten Stelle, also etwa so
    94.76967370 0.58000000
    95.96928983 0.61000000
    97.16890595 0.60000000
    98.36852207 0.60000000
    99.56813820 0.59000000
    100.76775432 0.59000000
    101.96737044 0.58000000
    103.16698656 0.56000000
    104.36660269 0.59000000
    105.56621881 0.60000000
    - Das soll dann im Excel im aktiven Tabellenblatt unter der aktiven Zelle eingefügt werden, so dass alle Zahlen der ersten Spalte in einer Spalte untereinander stehen und alle Zahlen der 2. Spalte in der Spalte daneben ebenfalls untereinander stehen, das ganze mit "," als Dezimaltrennzeichen. Also etwa so:
    94,770 0,580
    95,969 0,610
    97,169 0,600
    98,369 0,600
    99,568 0,590
    100,768 0,590
    101,967 0,580
    103,167 0,560
    104,367 0,590
    105,566 0,600
    - schön wäre es wenn alles noch auf Zahl mit 3 Nachkommastellen formatiert würde
    - zu guter letzt wäre eine Abfrage mit der man das aktuelle Tabellenblatt umbenennen kann optimal, hier könnte als Vorschlag bereits der Name der importierten Datei drinstehen (der meistens etwas zu lang dafür ist).

    Wie man das im Excel von Hand macht weiß ich natürlich, aber da ich in Zukunft viele Hundert Dateien mit Versuchsdaten auf diese Art und Weise importieren muss wäre ich wirklich äußerst dankbar wenn mir jemand ein entsprechend angepasstes Excelmakro geben könnte (wie importiert man das dann eigentlich ins excel?).

    Vorab schon mal vielen vielen Dank und

    Gruss Oli
    Na klar habe ichs zuerst mit dem Makrorekorder versucht!

    Der hat aber leider das Problem das immer die gleiche Datei eingelesen wird (keine Möglichkeit den Dateinamen auszuwählen) und dann kann ich mit dem Makrorekorder auch nur für genau definierte Zeilen ein Leerzeichen entfernen, also z.B. A2:A85. Die Daten sind aber in dieser Hinsicht nicht immer gleich.
    immer die gleiche Datei eingelesen wird
    Du kannst den festen String zu der einen Datei jederzeit durch Variablen/Arrays/Schleifen ersetzen, wo ist das Problem?
    nur für genau definierte Zeilen ein Leerzeichen entfernen
    Auch hier lassen sich dynamische For-Schleifen einbauen, die alle vorhandenen Zeilen durchlaufen:

    Visual Basic-Quellcode

    1. z = 1
    2. while Range("A" & z).Value > ""
    3. Range("A" & z).Value = replace(Range("A" & z).Value ," ","")
    4. z = z + 1
    5. Wend
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Super Tipp! Besonders wenn er am Anfang extra sagt, dass er sich nicht so sehr gut auskennt. ~:-}

    Sorry Oli, würde dir gerne helfen...

    Edit by Agent: Solche sinnvollen Beiträge/Spam sind in Zukunft zu unterlassen.

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

    Du kannst den festen String zu der einen Datei jederzeit durch Variablen/Arrays/Schleifen ersetzen, wo ist das Problem?


    Das Problem (an dem ich mich übrigens auch gerade "erfreue") ist das folgende, dass er nicht weiß bzw. herausfindet, wie er das machen soll.

    Also ich persönlich wäre da für einen Tipp dankbar... :)

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

    Excel-Makro für ASCII-Datenimport

    Hallo Leute,

    vielen Dank für die Tips, mittlerweile habe ich mich einigermaßen eingelesen und das Problem gelöst. War zwar ein ziemlicher Aufwand aber es funzt und ich habe auch was dazugelernt...

    Grus Oliver