Hallo Wissende,
Code soll Vba übergreifend funktionieren nur mit leichten Anpassungen.
Aber für das Problem spielt das keine Rolle, könnte auch ein VB-Problem sein.
Ich habe eine Textdatei, zu Anfangs leer. Dadrin soll Zug um Zug ein großes mehrdimensionales Array gespeichert werden.
Bei jedem Aufruf von ListeEintragen soll die Textdatei in ein Array gelsen werden, dann die Textdatei neu leer geöffnet werden.
Nun soll im Dimensionsaufbau wie das Array ein (einzeiliger) Satz geschrieben werden, dann dazu/danach das Array und die neue Textdatei gespeichert.
Danach wieder geöffnet und ausgelesen werden um die neueste „Liste“ zu haben.
Wie im Code ersichtlich klappt schon das erste Einlesen nicht bzw. das klappt irgendiew aber Zugriff mit MsgBox auf das erste Element geht schief, Fehler 13.
Gut, beim ersten Lesen könnte man ja sagen, Fehler kommt weil das Array=die Textdatei leer ist. Aber wenn ich die Zeile lösche kommt der glkeiche Fehler bei der zweiten MsgBox und da sollte zuindest ein Datensatz drin sein
Danke ^ Gruß
Reinhard
Sub Fehlertest()
Call ListeEintragen(ActiveDocument)
End Sub
Sub ListeEintragen(ByRef Doc As Document)
Dim MyArray As Variant
Const PfadDat As String = "c:\test\Dateiliste1\_3.txt"
MyArray = ReadArray(PfadDat)
MsgBox MyArray(0, 0) 'Hier kommt Fehler 13 Typen unverträglich
Call SaveArray("c:\test\Dateiliste1\_2.txt", MyArray, Doc)
MyArray = ReadArray(PfadDat)
MsgBox MyArray(0, 0) 'Hier kommt Fehler 13 Typen unverträglich
End Sub
Public Sub SaveArray(ByVal sFile As String, vArray As Variant, Doc As Document)
Dim F As Integer, arrDoc(0, 2) As String, nCount As Long
arrDoc(0, 0) = Doc.Name
arrDoc(0, 1) = FileDateTime(Doc)
arrDoc(0, 2) = Doc.Path
If Dir$(sFile) "" Then Kill sFile
F = FreeFile
nCount = UBound(arrDoc)
If Not IsEmpty(vArray) Then nCount = nCount + 1 + UBound(vArray)
Open sFile For Binary As #F
Put #F, , nCount
Put #F, , arrDoc
If Not IsEmpty(vArray) Then Put #F, , vArray
Close #F
End Sub
Public Function ReadArray(ByVal sFile As String) As Variant
Dim F As Integer, nCount As Long, vArray As Variant
'If Len(Dir$(sFile)) \> 0 Then
F = FreeFile
Open sFile For Binary As #F
Get #F, , nCount
ReDim vArray(nCount)
Get #F, , vArray
Close #F
'End If
ReadArray = vArray
End Function