Hallo zusammen,
ich stitze schon seit längeren an einen Problem und habe schon einiges im Internet gesucht und probiert. Ich habe in Excel eine Userform entwickelt.Daten, die in diese Userform eingetragen werden, werden in Arrays gespeichert. (Das Programm ist zur Ursachenanalyse von Fehlern gedacht und hat 10 Reiter mit Textboxen die wiederum 10 Reiter mit Textboxen beinhalten usw. 10x10x10x6) Der Aufbau der Userfrom ist trotzdem Simpel, da ich trotzdem nur 4 Textboxen erstellen musste, aber das weicht von meiner Frage ab.
Um dise ganze Daten während der Laufzeit abzufragen, werden diese in Arrays gespeichert. Das Problem ist, dass wenn ich die Datei schliese, diese Daten logischerweise nicht mehr vorhanden sind. Wie ich die einzelnen Daten der Arrays in eine Textdatei schreibe und nach bedarf wieder einlese ist mir bekannt und das würde Theordisch auf Funktionieren, doch da macht mir die Zeit einen Strich durch die Rechnung. Aufgrund der großen Breite und Menge der Array, dauert das ein und Auslesen der Arrays ca. 5 Minuten und das ist absolut inakzeptabel, da dies beim wechseln zwischen einzelnen Projekten geschehen soll.
Nun habe ich im Internet etwas gefunden
http://www.vbarchiv.net/tipps/tipp_1093-array-schnell-speichern-und-wieder-laden.html
jedoch funktioniert das für mein vorhaben nicht wirklich
hier mal meine ganzen Arrays, die ich abspeichern nöchte. Eine Datei, je Array wäre Super. Zu beachten ist, das es auch sein kann, das bestimmte Daten "Leer" sein können und es sich hauptsächlich um Lange Texte mit Absätzen usw. handelt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | Dim Ursache_0(9) As String
Dim Ursache_1(9, 9) As String
Dim Ursache_2(9, 9, 9) As String
Dim Ursache_3(9, 9, 9, 5) As String
Dim Abstell_Verantw(9, 9, 9, 5) As String
Dim Abstell_Termin(9, 9, 9, 5) As String
Dim Wirksam_Verantw(9, 9, 9, 5) As String
Dim Wirksam_Termin(9, 9, 9, 5)
Dim Erledigt_0(9) As Boolean
Dim Erledigt_1(9, 9) As Boolean
Dim Erledigt_2(9, 9, 9) As Boolean
Dim Erledigt_3(9, 9, 9, 5) As Boolean
Dim Erledigt_3_1(9, 9, 9, 5) As Boolean
Dim Verfolgen_0(9) As Boolean
Dim Verfolgen_1(9, 9) As Boolean
Dim Verfolgen_2(9, 9, 9) As Boolean
Dim Nicht_Verfolgen_0(9) As Boolean
Dim Nicht_Verfolgen_1(9, 9) As Boolean
Dim Nicht_Verfolgen_2(9, 9, 9) As Boolean
Dim Zurückstellen_0(9) As Boolean
Dim Zurückstellen_1(9, 9) As Boolean
Dim Zurückstellen_2(9, 9, 9) As Boolean
Mein Versuch, die Datenfelder in Dateien auszulager sieht wie folgt aus. (Die Zahl die nach Datenfeld kommt, soll aussagen wie viele Felder das Array beinhaltet.
|
Function Datenfeld_1_Speichern(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Dateiendung As String)
Dim i1 As Long
For i1 = 0 To Anzahl_Feld1
Filpat = Pfad & Dateiname & i1 & Dateiendung
If Datenfeld(i1) <> "" Then
Open Filpat For Output As #1
Print #1, Datenfeld(i1)
Close #1
Else
If Dir(Filpat) <> "" Then
Kill (Filpat)
End If
End If
Next i1
End Function
Function Datenfeld_2_Speichern(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
Filpat = Pfad & Dateiname & i1 & "_" & i2 & Dateiendung
If Datenfeld(i1, i2) <> "" Then
Open Filpat For Output As #1
Print #1, Datenfeld(i1, i2)
Close #1
Else
If Dir(Filpat) <> "" Then
Kill (Filpat)
End If
End If
Next i2
Next i1
End Function
Function Datenfeld_3_Speichern(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Anzahl_Feld3, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
For i3 = 0 To Anzahl_Feld3
Filpat = Pfad & Dateiname & i1 & "_" & i2 & "_" & i3 & Dateiendung
If Datenfeld(i1, i2, i3) <> "" Then
Open Filpat For Output As #1
Print #1, Datenfeld(i1, i2, i3)
Close #1
Else
If Dir(Filpat) <> "" Then
Kill (Filpat)
End If
End If
Next i3
Next i2
Next i1
End Function
Function Datenfeld_4_Speichern(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Anzahl_Feld3, Anzahl_Feld4, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim i4 As Long
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
For i3 = 0 To Anzahl_Feld3
For i4 = 0 To Anzahl_Feld4
Filpat = Pfad & Dateiname & i1 & "_" & i2 & "_" & i3 & "_" & i4 & Dateiendung
If Datenfeld(i1, i2, i3, i4) <> "" Then
Open Filpat For Output As #1
Print #1, Datenfeld(i1, i2, i3, i4)
Close #1
Else
If Dir(Filpat) <> "" Then
Kill (Filpat)
End If
End If
Next i4
Next i3
Next i2
Next i1
End Function
Function Datenfeld_1_Laden(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Dateiendung As String)
Dim i1 As Long
Dim Ausgabetext As String
For i1 = 0 To Anzahl_Feld1
Filpat = Pfad & Dateiname & i1 & Dateiendung
If Dir(Filpat) <> "" Then
Open Filpat For Input As #1
Datenfeld(i1) = ""
Do While Not EOF(1)
Input #1, Ausgabetext
Datenfeld(i1) = Datenfeld(i1) & Ausgabetext & vbCr
Loop
Close #1
End If
Next i1
End Function
Function Datenfeld_2_Laden(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
Dim Ausgabetext As String
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
Filpat = Pfad & Dateiname & i1 & "_" & i2 & Dateiendung
If Dir(Filpat) <> "" Then
Open Filpat For Input As #1
Datenfeld(i1, i2) = ""
Do While Not EOF(1)
Input #1, Ausgabetext
Datenfeld(i1, i2) = Datenfeld(i1, i2) & Ausgabetext & vbCr
Loop
Close #1
End If
Next i2
Next i1
End Function
Function Datenfeld_3_Laden(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Anzahl_Feld3, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim Ausgabetext As String
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
For i3 = 0 To Anzahl_Feld3
Filpat = Pfad & Dateiname & i1 & "_" & i2 & "_" & i3 & Dateiendung
If Dir(Filpat) <> "" Then
Open Filpat For Input As #1
Datenfeld(i1, i2, i3) = ""
Do While Not EOF(1)
Input #1, Ausgabetext
Datenfeld(i1, i2, i3) = Datenfeld(i1, i2, i3) & Ausgabetext & vbCr
Loop
Close #1
End If
Next i3
Next i2
Next i1
End Function
Function Datenfeld_4_Laden(Pfad As String, Dateiname As String, Datenfeld, Anzahl_Feld1 As Integer, Anzahl_Feld2, Anzahl_Feld3, Anzahl_Feld4, Dateiendung As String)
Dim i1 As Long
Dim i2 As Long
Dim i3 As Long
Dim i4 As Long
Dim Ausgabetext As String
For i1 = 0 To Anzahl_Feld1
For i2 = 0 To Anzahl_Feld2
For i3 = 0 To Anzahl_Feld3
For i4 = 0 To Anzahl_Feld4
Filpat = Pfad & Dateiname & i1 & "_" & i2 & "_" & i3 & "_" & i4 & Dateiendung
If Dir(Filpat) <> "" Then
Open Filpat For Input As #1
Datenfeld(i1, i2, i3, i4) = ""
Do While Not EOF(1)
Input #1, Ausgabetext
Datenfeld(i1, i2, i3, i4) = Datenfeld(i1, i2, i3, i4) & Ausgabetext & vbCr
Loop
Close #1
End If
Next i4
Next i3
Next i2
Next i1
End Function
Am besten wäre, wenn ich eine Function hätte, in der ich z.b. Dim Ursache_3(9, 9, 9, 5) As String übergebe und dieses
wird komplett als Datei gespeichert und kann umgekehrt wieder genau so gefüllt werden.
Kann mir jemand helfen??
|