Hallo zusammen,
ich sitze schon seit längeren an einen Problem und habe schon einiges im Internet und auch hier 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.
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
Beispiel für ein Array mit 2 Datenfeldern (Speichern)
Beispiel für ein Array mit 4 Datenfeldern (Speichern)
Und umgekehrt ein Array mit 4 Datenfeldern wieder einlesen
Wie gesagt, dass ganze funktioniert schon, allerdings viel zu langsam.
Am besten wäre, wenn ich eine Function hätte, in der ich z.b. Ursache_3 übergebe und dieses wird komplett als Datei gespeichert und kann umgekehrt wieder genau so gefüllt werden. Kann mir jemand helfen?
Danke im Vorraus
ich sitze schon seit längeren an einen Problem und habe schon einiges im Internet und auch hier 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.
Visual Basic-Quellcode
- 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
Beispiel für ein Array mit 2 Datenfeldern (Speichern)
Visual Basic-Quellcode
- 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
Beispiel für ein Array mit 4 Datenfeldern (Speichern)
Visual Basic-Quellcode
- 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
Und umgekehrt ein Array mit 4 Datenfeldern wieder einlesen
Visual Basic-Quellcode
- 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
Wie gesagt, dass ganze funktioniert schon, allerdings viel zu langsam.
Am besten wäre, wenn ich eine Function hätte, in der ich z.b. Ursache_3 übergebe und dieses wird komplett als Datei gespeichert und kann umgekehrt wieder genau so gefüllt werden. Kann mir jemand helfen?
Danke im Vorraus