Thema Datum  Von Nutzer Rating
Antwort
Rot Mehrdimensionales Array speichern
23.01.2013 11:37:15 Gast38390
NotSolved
23.01.2013 11:40:43 Daniel
NotSolved

Ansicht des Beitrags:
Von:
Gast38390
Datum:
23.01.2013 11:37:15
Views:
1539
Rating: Antwort:
  Ja
Thema:
Mehrdimensionales Array speichern

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.

 

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??

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Mehrdimensionales Array speichern
23.01.2013 11:37:15 Gast38390
NotSolved
23.01.2013 11:40:43 Daniel
NotSolved