Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Backup aus txt-Datei einlesen

Backup aus txt-Datei einlesen
22.05.2017 15:39:04
David
Hallo zusammen.
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur ein Tipp
22.05.2017 18:12:42
Oberschlumpf
Hi David,
zeig uns bitte mal per Upload eine Bsp-EXCEL-Datei (kein Bild o. Ä.) und eine Bsp-Text-Datei.
Denn nur du weißt, wie die Daten in der txt-Datei gespeichert sind.
Denn nur du weißt, wie deine Excel-Datei aufgebaut ist.
Die Excel-Datei sollte natürlich deinen Code enthalten.
Ciao
Thorsten
AW: nur ein Tipp
23.05.2017 02:47:14
Rainer
Hallo David,
als einfacherere Lösung: Speichere deine "Backups" doch einfach als 2. Exceltabelle?
Oder schau mal hier (habe es aber nicht selber probiert):
https://stackoverflow.com/questions/20390397/reading-entire-text-file-using-vba
Gruß,
Rainer
AW: nur ein Tipp
23.05.2017 07:52:56
David
sorry, meinte natürlich Thorsten, nicht Rainer.
@Rainer:
Ich weiß aus früheren Versuchen, dass ich mit dem Handling mit mehreren Dateien immer irgendwie durcheinander gekommen bin, da ich es nicht hinkriegte, mich immer auf die richtige Datei zu referenzieren etc.
Versuchen könnte ich es.
Den Link schaue ich mir noch an.
Danke soweit erstmal.
Gruß
David
Anzeige
AW: nur ein Tipp
23.05.2017 08:47:57
David
Hallo Rainer,
hab mir jetzt deinen Link mal angeschaut und es mit den dortigen Infos hinbekommen.
Danke nochmal dafür.
Gruß
David
Hier noch für alle, die den Beitrag im Archiv finden:
Private Sub restore_data()
Dim Data
Open "H:\backup_rk.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Data
MsgBox Data
Loop
Close #1
End Sub
Damit bekommt man jede Zeile jeweils in die Variable "Data" geschrieben. Die weitere Verarbeitung folgt dann jetzt erst.
AW: nur ein Tipp
23.05.2017 10:04:03
Rainer
Glückwunsch und danke für deine Rückmeldung!
Gruß,
Rainer
AW: nur ein Tipp
23.05.2017 07:49:46
David
Hallo Rainer,
das hätte ich schon gemacht, aber da das Formular erst aufwändig "gereinigt" werden müsste, hatte ich gehofft, das vermeiden zu können. Daher auch die recht ausführliche Beschreibung.
Davon abgesehen, das zeilenweise Auslesen einer Text-Datei sollte doch wohl irgendwie universell gehen und unabhängig vom Inhalt. Ich hatte ja geschrieben, dass ich die Analyse der Inhalte prinzipiell selbst hinbekommen würde, ich weiß nur nicht, welche Befehle es für den Input gibt.
Danke für dein Anregung.
Gruß
David
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige