Ich habe ein Reisekostenformular, in dem (verstreut) verschiedene Eingabefelder existieren. Ich möchte dem Anwender die Möglichkeit geben, alle gemachten Eingaben in eine "Backup-Datei" zu schreiben und diese dann ggf. wieder einzuspielen (wenn z. Bsp. eine neue Version vorliegt und er eine bereits gespeicherte Datei als Vorlage verwenden will).
Das Sichern in eine Text-Datei habe ich durch Archiv-Suche bereits erfolgreich lösen können.
Mit dem Wieder-Einlesen tue ich mich schwerer:
--> Wie öffne ich eine Text-Datei und lese dann schrittweise Zeile für Zeile?
Ich habe das Backup so realisiert, dass jeweils der Name des Wertes, eine Index-Nummer (falls notwendig) und dann der Wert in die Datei geschrieben wird. Name und Index habe ich in eckige Klammern gestellt (falls das Unsinn ist oder besser anders gemacht werden sollte, bitte vorschlagen).
Meine Idee ist folgende:
- Lesen der Zeile
- Identifizieren des Feld-Namens
- Identifizieren des Indexes
- Identifizieren des Wertes
- Schreiben in die neue Datei
dabei werden die Positionen der Werte über einen definierten Namen ermittelt (falls es Verschiebungen gab)
Die schrittweise Abarbeitung bekomme ich sicher hin, wenn ich erst einmal den Zeileninhalt aus der Backup-Datei gelesen habe (in eine Variable?)
Hier noch der bisherige (Backup)-Code:
Private Sub Save_Data()
Dim Name As String, StartT As Date, EndeT As Date, StartZ As Date, EndeZ As Date
Dim Weg As String, Land As String, Zweck As String, KSt As String
Dim AuftragNr(1 To 3) As String, AuftragProzent(1 To 3) As Integer
Dim Ort(1 To 31) As String, Frueh(1 To 31) As Byte, Mittag(1 To 31) As Byte, Abend(1 To 31) As _
Byte
Dim Kostenart(1 To 20) As String, Datum(1 To 20) As Date, Kommentar(1 To 20) As String, _
Waehrung(1 To 20) As String
Dim Betrag(1 To 20) As Integer, BetragEUR(1 To 20) As Integer, USt(1 To 20) As Byte
Dim Speicherort As String
Dim i As Byte
Dim strDatei As String, intFile As Integer
intFile = FreeFile
strDatei = "H:\backup_rk.txt"
Open strDatei For Append As #intFile
'MsgBox ActiveWorkbook.Names("Start")
Name = Tabelle4.Range("C16")
Print #intFile, "[" & "Name" & "]" & Name
StartT = Tabelle1.Range("E5")
Print #intFile, "[" & "StartT" & "]" & StartT
EndeT = Tabelle1.Range("E6")
Print #intFile, "[" & "EndeT" & "]" & EndeT
StartZ = Tabelle1.Range("I5")
Print #intFile, "[" & "StartZ" & "]" & StartZ
EndeZ = Tabelle1.Range("I6")
Print #intFile, "[" & "EndeZ" & "]" & EndeZ
Weg = Tabelle1.Range("E7")
Print #intFile, "[" & "Weg" & "]" & Weg
Land = Tabelle1.Range("E8")
Print #intFile, "[" & "Land" & "]" & Land
Zweck = Tabelle1.Range("K5")
Print #intFile, "[" & "Zweck" & "]" & Zweck
KSt = Tabelle1.Range("E13")
Print #intFile, "[" & "KSt" & "]" & KSt
For i = 1 To 3
AuftragNr(i) = Tabelle1.Range("E" & i + 8)
Print #intFile, "[" & "AuftragNr" & "]" & "[" & i & "]" & AuftragNr(i)
AuftragProzent(i) = Tabelle1.Range("J" & i + 8)
Print #intFile, "[" & "AuftragProzent" & "]" & "[" & i & "]" & AuftragProzent(i)
Next
For i = 1 To 31
Ort(i) = Tabelle1.Range("D" & i + 16)
Print #intFile, "[" & "Ort" & "]" & "[" & i & "]" & Ort(i)
Frueh(i) = Tabelle1.Range("F" & i + 16)
Print #intFile, "[" & "Frueh" & "]" & "[" & i & "]" & Frueh(i)
Mittag(i) = Tabelle1.Range("G" & i + 16)
Print #intFile, "[" & "Mittag" & "]" & "[" & i & "]" & Mittag(i)
Abend(i) = Tabelle1.Range("H" & i + 16)
Print #intFile, "[" & "Abend" & "]" & "[" & i & "]" & Abend(i)
Next
For i = 1 To 20
Kostenart(i) = Tabelle1.Range("C" & i + 52)
Print #intFile, "[" & "Kostenart" & "]" & "[" & i & "]" & Kostenart(i)
Datum(i) = Tabelle1.Range("E" & i + 52)
Print #intFile, "[" & "Datum" & "]" & "[" & i & "]" & Datum(i)
Kommentar(i) = Tabelle1.Range("F" & i + 52)
Print #intFile, "[" & "Kommentar" & "]" & "[" & i & "]" & Kommentar(i)
Waehrung(i) = Tabelle1.Range("K" & i + 52)
Print #intFile, "[" & "Waehrung" & "]" & "[" & i & "]" & Waehrung(i)
Betrag(i) = Tabelle1.Range("L" & i + 52)
Print #intFile, "[" & "Betrag" & "]" & "[" & i & "]" & Betrag(i)
BetragEUR(i) = Tabelle1.Range("N" & i + 52)
Print #intFile, "[" & "BetragEUR" & "]" & "[" & i & "]" & BetragEUR(i)
USt(i) = Tabelle1.Range("O" & i + 52)
Print #intFile, "[" & "USt" & "]" & "[" & i & "]" & USt(i)
Next
Speicherort = Tabelle1.Range("S10")
Print #intFile, "[" & "Speicherort" & "]" & Speicherort
Close #intFile
End Sub
Ich hoffe, meine Erläuterungen waren nicht zu ausschweifend, aber ich wollte vorbeugend möglichst viele Infos mitgeben.Vielen Dank schon mal im Voraus.
Gruß
David