Hallo,
wir nutzen mit Outlook die öffentlichen Ordner zur Ablage von selbst dokumentierten Fehlermeldungen bei der Softwareentwicklung.
Hierzu habe ich ein entsprechendes Outlook-Formular entworfen, welches
durch VBScript teilweise automatisiert wurde.
Weiterhin ist auf diesem Formular ein Button, durch welchen bestimmte Informationen der im Öffentlichen Ordner abgelegten Fehlermeldungen (z.B. Prio, Kurztext, Status) nach Excel exportiert werden sollen.
Seit wir auf Office 2003 umgestellt haben, gibt es hierbei Probleme.
Je mehr Einträge im öffentlichen Ordner vorhanden sind (> 100), dann wird
die Übertragung nach Excel immer langsamer und bricht nach Durchsuchen von ca 200 Einträgen mit der Meldung "... nicht genügend Arbeitsspeicher..." ab.
Zur Verdeutlichung hier ein Teil des Codes (unwichtige Zeilen habe ich weggelassen):
Sub cm_Click()
Set nms = Application.GetNameSpace("MAPI")
Set fld = nms.Folders("Öffentliche Ordner").Folders("Alle Öffentlichen Ordner").Folders("Test").Folders("TestDB")
Set itms = fld.Items
m1 = itms.Count
If m1 > 0 Then ' wenn Einträge vorhanden sind Exceldatei erzeugen
Set oEx = CreateObject("Excel.Application")
oEx.Workbooks.Add
Set oSheet = oEx.ActiveSheet
oEx.Visible = True ' nur zum Debuggen, sonst wird erst später sichtbar gemacht
' Je nach Meldekategorie (Status) soll Ausgabe in Exceldatei erfolgen
For it = 1 To m1
If itms(it).UserProperties("Meldekategorie").Value = meldung Then
x = x + 1
excelAuswertung it, x, y
End If
Next
Set oSheet = Nothing
Set oEx = Nothing
End If
End Sub
Sub excelAuswertung(it, x, y)
zahl = 1
With oSheet
With .Cells(x, zahl) ' Nr
.Value = x - 1
.Font.Bold = True
.Font.ColorIndex = 9
End With
zahl = zahl + 1
With .Cells(x, zahl)
.Value = itms(it).UserProperties("Bearbeitungsstatus").Value
.WrapText = True
End With
End With
End Sub
Alles anzeigen
Ich durchsuche also den Ordner, und schaue bei jedem Eintrag (item(it)) nach der Meldekategorie, und schreibe dann die Daten nach Excel.
Das Problem ist, das man dabei zusehen kann, wie die Auslagerungsdatei von Windows XP sehr schnell anwächste, und das dann zu der oben genannten Fehlermeldung führt.
Nach Beendigung des Formulares wird der Speicher auch nicht komplett wieder freigegeben.
Hat jemand eine Idee, woran das liegen kann?
Macht es ein Unterschied ob man eine Prozedur so
Call MyProc(argument) oder so MyProc argument
aufruft?
__________________
Gruss
M@ik
---------------------------------
WinXP Pro, Office 2003