Run out of memory
 |
Betrifft: Run out of memory
von: Ryu_Hoshi
Geschrieben am: 27.08.2004 11:31:57
Hallo Ich habe einen Macro der bei kleinen Dateien (36kb, 178 Zeilen) gut läuft, jetzt habe ich es mal mit grosser Datei (694 kb, 3570 Zeilen) versucht und bekomme den Fehler 7, run out of memory.
Weiss zufällig einer wie man das Problem lösen könnte? So sieht der code aus bis zu dem Punkt wo es abstürzt
Sub Auto_Open()
UserForm1.Show
Application.ScreenUpdating = False
Dim xPathAndFile As Variant
Dim xfn&
Dim xTxt$
Dim xA As Variant
Dim xB As Variant
Dim xi&
Dim xC As Variant
Dim xD As Variant
Dim wks As Worksheet
Dim xLastRow As Long
Dim rngX As Excel.Range
Dim wksE As Excel.Worksheet
'oder:
'xPathAndFile = ThisWorkbook.Path & "\" & "excel.ashx"
xPathAndFile = Application.GetOpenFilename("Files (*.ashx), *.ashx", Title:="File gesucht")
If xPathAndFile = False Then
MsgBox "Nichts ausgewählt!"
Exit Sub
End If
xfn = FreeFile
Open xPathAndFile For Binary As xfn
xTxt = Space(LOF(xfn))
Get xfn, 1, xTxt
Close xfn
'Zeilenunbrüche zur unterscheidung von Spaltenumbrüchen umbenennen
xTxt = Replace(xTxt, vbCrLf, Chr(0), 1, -1, 0)
'Umbrüche in den Zellen entfernen
xTxt = Replace(xTxt, vbCr, " ", 1, -1, 0)
'alle <td> durch Tab ersetzen
xTxt = Replace(xTxt, "<td>", vbTab, 1, -1, 1)
'Alle Html Tags entfernen
xTxt = Replace(xTxt, "<table>", "", 1, -1, 1)
xTxt = Replace(xTxt, "</table>", "", 1, -1, 1)
xTxt = Replace(xTxt, "</td>", "", 1, -1, 1)
xTxt = Replace(xTxt, "<tr>", "", 1, -1, 1)
xTxt = Replace(xTxt, "</tr>", "", 1, -1, 1)
xTxt = Replace(xTxt, "<b>", "", 1, -1, 1)
xTxt = Replace(xTxt, "</b>", "", 1, -1, 1)
xTxt = Replace(xTxt, "<br/>", "", 1, -1, 1)
Do While InStr(1, xTxt, "<", 1)
xTxt = Left(xTxt, InStr(1, xTxt, "<", 1) - 1) & Mid(xTxt, InStr(1, xTxt, ">", 1) + 1)
Loop
bei der Do While schleife, vorletzte Zeile stürzt es ab
 |
Betrifft: AW: Run out of memory
von: Andreas Walter
Geschrieben am: 27.08.2004 12:03:55
Kann es sein, dass in xTxt zu diesem Zeitpunkt es ein
<
gibt, aber kein entsprechendes
>
weil dann wird xTxt länger und länger und länger, weil
xtxt = Left(xtxt, InStr(1, xtxt, "<", 1) - 1) & Mid(xtxt, InStr(1, xtxt, ">", 1) + 1)
macht richtigerweise aus
abc<def>ghi
abcghi
ABER, aus
abc<defghi
wird
abcabc<defghi
Vielleicht solltest Du tatsächlich kontrollieren, ob ein
>
nach dem
<
tatsächlich nochmals vorkommt
Betrifft: AW: Run out of memory
von: Ryu_Hoshi
Geschrieben am: 27.08.2004 13:16:31
Hallo ANdres Walter. Kannst du mir das bitte in meinem code anpassen und posten bitte? Diesen Teil hat mir einer aus Forum gemacht und ich verstehe nicht so richtig was in der letzten Schleife gemacht wird.... Könntest du das bitte machen*auf den Knien rutschend*? :)
Betrifft: AW: Run out of memory
von: Andreas Walter
Geschrieben am: 27.08.2004 13:37:06
Do While InStr(1, xTxt, "<", 1)
If InStr(InStr(1, xTxt, "<", 1), xTxt, ">") > 0 Then
xTxt = Left(xTxt, InStr(1, xTxt, "<", 1) - 1) & Mid(xTxt, InStr(1, xTxt, ">", 1) + 1)
Else
Exit Do
End If
Loop
Und hierzu die Erklärung:
1) Schleife machen, bis es kein "<" mehr in xTxT gibt (dann wird Schleife beendet/nicht mehr durchgeführt)
2) Suche nach einem ">" NACH dem ersten "<" in xTxt, ob vorhanden
3) Wenn vorhanden, dann Tag ausschneiden (z.B. aus abc<def>ghi wird abcghi
4) ansonsten
5) verlass die Schleife
6) Ende vom If (=Wenn) Block
7) Ende der Schleife, spring Sprung zum Anfang der Schleife
Gratuliere! Jatzt kannst Du programmieren!
Betrifft: AW: Run out of memory
von: Ryu_Hoshi
Geschrieben am: 27.08.2004 14:14:02
Danke! Der Fehler kommt aber leider immer noch und in dersleben Zeile.... :(
Betrifft: AW: Run out of memory
von: Ryu_Hoshi
Geschrieben am: 27.08.2004 14:43:03
problem von slebst gelöst
Beiträge aus den Excel-Beispielen zum Thema "Run out of memory"