Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

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"