Need Help bei Eingabe und Ausgabe

Dolphon

Erfahrenes Mitglied
Moin.

Ich habe angefangen ein Makro zu basteln. Dieses Makro liest nur den Inhalt der ersten Zeile eienr Datei ein, und verarbeitet diese weiter. Und zwar berechent er den arithmetischen Mittelwert.
1. Problem. Er soll alle Zeilen auslesen.

Nachdem er den Mittelwert errechent hat, soll er diesen in eine anderen Datei speichern.
2. Problem: Weiß nicht wie er dieerrechenten DAten von vorher in die Daei schreibt.

3. Problem: Und zum Schluss soll er noch die Daten in Excel in eiern Tabelle ausgeben und daraus dann ein Diagramm erstellen.

Hier erstmal der Code:


PHP:
Sub Einlesen()

Dim WKN As String
Dim Kurs As String
Dim Uhrzeit As String
Dim Trennfeld As String
Dim Kurs2 As String
Dim Kurs3 As String
Dim Kurs4 As String
Dim Mittelwert As Double
Dim num As Double
Dim num2 As Double
Dim num3 As Double
Dim num4 As Double



Open "C:\kurs_ein.txt" For Input As 1

Input #1, WKN
Input #1, Kurs
Input #1, Uhrzeit
Input #1, Trennfeld
Input #1, Kurs2
Input #1, Kurs3
Input #1, Kurs4

Close 1

num = Val(Kurs)
num2 = Val(Kurs2)
num3 = Val(Kurs3)
num4 = Val(Kurs4)


Mittelwert = (num + num2 + num3 + num4) / 4

Debug.Print WKN
Debug.Print Kurs
Debug.Print Uhrzeit
Debug.Print Kurs2
Debug.Print Kurs3
Debug.Print Kurs4
Debug.Print Mittelwert


Open "C:\avgkurs.txt" For Output As 2

Print #2, "WKN=   AVG=   "

Close 2


End Sub

Hoffe mir kann eienr helfen.

MFG

Dolphon
 
Wenn du alle Zeilen brauchst, lies die Datei in einer Schleife ein bis zum Ende:

Code:
Do While Not EOF(1)
   Input #1, WKN, Kurs, ...
   'Daten hier verarbeiten
Loop

EOF steht für End of File, also Dateiende.
Wichtig ist das du die Daten aus den Variablen vor der Loop-Anweisung verarbeitest, sonst werden die Variablen beim nächsten Durchlauf wieder überschrieben.

Schreiben geht ähnlich wie lesen, z.B. mit Write, Syntax siehe Onlinehilfe.

Zu Excel:
Entweder Buch zum Thema VBA mit Excel kaufen oder die leichte Methode: das Diagramm einmal per Hand erstellen, mit dem Makrorekorder aufzeichnen und sich den Code anschauen und anpassen.
 
Zuletzt bearbeitet:
Danke für die Antwoert.

Wenn ich das so mach wie du gesagt hast, dann SPuckt der immer ne Fehelrmeldugn aus.
Dateiname oder numemr falsch.
Bekomem diesen Fehler einfach nicht weg.

PHP:
Do While Not EOF(1)

Open "C:\kurs_ein.txt" For Input As 1


Input #1, WKN
Input #1, Kurs
Input #1, Uhrzeit
Input #1, Trennfeld
Input #1, Kurs2
Input #1, Kurs3
Input #1, Kurs4

Close 1

num = Val(Kurs)
num2 = Val(Kurs2)
num3 = Val(Kurs3)
num4 = Val(Kurs4)


Mittelwert = (num + num2 + num3 + num4) / 4

Debug.Print WKN
Debug.Print Kurs
Debug.Print Uhrzeit
Debug.Print Kurs2
Debug.Print Kurs3
Debug.Print Kurs4
Debug.Print Mittelwert


Open "C:\avgkurs.txt" For Output As 2

Print #2, "WKN=   AVG=   "

Close 2
Loop
 
Du solltest auch erst die Datei öffnen und dann die Schleife starten, sonst weiß VB nicht bei welcher Datei du EOF prüfen willst.

Also in der Reihenfolge: open, schleife, close
 
irgendwie klappt das nicht. DIe Datei die eingelesen wird, sieht so aus:

500340,65.30,"4:37",0.00,62.70,65.50,65.30,0
529650,23.00,"4:29",0.00,22.90,23.90,23.00,0
555750,72.50,"4:38",0.00,70.40,73.90,72.50,0
623100,67.80,"4:38",0.00,66.00,67.90,67.80,0

bis jetzt hat deie erste Zeiel ohne Fehelr ausgelesen udn verarebiet.
Jetzt mit der Schleife geht der nur bis 0.00 und spuckt dann ne Fehelrmeldung aus. "Einlesen hinter Dateiende"
 
Wenn ich das richtig erkannt hab ist die letzte 0 ein Feld das nicht verwendet wird, das muss man aber trotzdem einlesen, damit die Zeile komplett ist.

Sonst liest VB jedes Feld in eine Variable und da die 0 am Ende noch nicht gelesen wurde bekommt beim zweiten Durchlauf WKN diesen Wert. Dadurch verschiebt sich der Satzaufbau immer um eins pro Zeile. Da die letzte Zeile dadurch weniger Felder enthält als Variablen gefüllt werden sollen gibts den Fehler Einlesen hinter Dateiende.

Code:
Open "c:\kurs_ein.txt" For Input As 1

Do While Not EOF(1)

    Input #1, WKN, Kurs, Uhrzeit, Trennfeld, Kurs2, Kurs3, Kurs4, Trennfeld2

    num = Val(Kurs)
    num2 = Val(Kurs2)
    num3 = Val(Kurs3)
    num4 = Val(Kurs4)

    Mittelwert = (num + num2 + num3 + num4) / 4

    Debug.Print WKN
    Debug.Print Kurs
    Debug.Print Uhrzeit
    Debug.Print Kurs2
    Debug.Print Kurs3
    Debug.Print Kurs4
    Debug.Print Mittelwert

    Open "c:\avgkurs.txt" For Output As 2

    Print #2, "WKN=   AVG=   "
    Print #2, WKN, Mittelwert

    Close 2
    
Loop

Close 1
 
Zuletzt bearbeitet:
klappt jetzt.
Allerdings soll er von jeder Zeielr den Mittelwert berechnen, was er auch macht.
Nur soll er ihn auch in die avgkurs hineinschreiben. Stattdessen schreibt er nur den Letzten Kurz mit dem Mitttelwert dort hinein. Dort soll en aber alle Kurse mit Mittelwerte stehen.
 
Weil er beim Öffen der Datei im Schreibmodus die alte immer wieder überschreibt.

Dann öffne die Datei 2 vor der Schleife (gleich nach Datei 1) und schreib die Überschrift rein und dann bei jedem Durchlauf eine weitere Zeile.
 
Zurück