Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Per VBA Größe der .pst-Datei ermitteln - wie gehts schneller?

Frage Microsoft Outlook & Mail

Mitglied: steini01

steini01 (Level 1) - Jetzt verbinden

03.01.2006, aktualisiert 04.01.2006, 10337 Aufrufe, 8 Kommentare

Hallo alle zusammen,

In unserer Firma gibt es User, die es immer wieder schaffen, Ihre .pst Dateien über die 2GB-Grenze hinaus aufzublähen.
Das bedeutet für mich jedesmal eine doch recht langwierige und lästige Reparatur mit den Tools "PST2GB" und "SCANPST" (von dem jeweiligen Datenverlust mal ganz abzusehen).
Also hab ich mir überlegt, ich schreibe ein kleines Makro, welches beim Start von Outlook dem Benutzer beim überschreiten der Größe von 1,5GB seiner .pst Datei eine entsprechende Meldung ausgibt.
Soweit - so Gut, leider konnte ich im Outlook-VBA keine Methode finden, welche mir die Gesamtgröße der Persönlichen Ordner-Datei ausgibt. D.h. ich ermittle jetzt über eine Rekursion die Größen aller einzelnen Unterordner und addiere diese dann zusammen. Hier mal mein Code:

Dim lTotalSize As Long

Private Sub Application_Startup()
ListAllFolders
End Sub


Function FolderSize(objFolder As MAPIFolder) As Long
Dim i As Long
Dim lSize As Long

With objFolder.Items
For i = 1 To .Count
lSize = lSize + .Item(i).Size
Next i

' Rückgabe in Bytes
FolderSize = lSize
End With
End Function


Sub ListAllFolders()
Dim olNS As NameSpace
Dim iTotalSize As Integer
lTotalSize = 0
Set olNS = Application.GetNamespace("MAPI")
ListFolder olNS.Folders, 0

'Ausgabe der gesamten Ordnergröße in MB
iTotalSize = Int(lTotalSize / 1024 / 1024)

'Wenn Datei > ~1,5GB dann Warnmeldung ausgeben
If iTotalSize > 1500 Then
MsgBox "Die Gesamtgröße der Persönlichen Ordner-Datei" & _
" beträgt: " & vbCrLf & CStr(iTotalSize) & " MB"
End If
End Sub


Sub ListFolder(parentfolder As Folders, i As Integer)
Dim olFold As MAPIFolder
Dim lSingleSize As Long

For Each olFold In parentfolder

'Ordnergröße ermitteln
lSingleSize = lSingleSize + FolderSize(olFold)
ListFolder olFold.Folders, i + 1
DoEventsNext

'Ordnergröße zur Gesamtgröße addieren
lTotalSize = lTotalSize + lSingleSize
End Sub


Das Ganze funktioniert soweit auch ganz gut, aber bei entsprechend vielen Unterordnern bzw. Dateigröße kann die Abarbeitung schon mal etwas dauern.
Damit wären wir auch bei meiner Frage: Kennt vielleicht jemand eine andere (schnellere) Möglichkeit, die Größe der Persönlichen Ordner-Datei per VBA zu ermitteln?

Schon mal vielen Dank im voraus.

Gruß steini.
Mitglied: wiri
03.01.2006 um 16:05 Uhr
hi
liegen die Postfächer auf einem Exchangeserver?
wenn ja mach es dir doch einfacher:
-lege eine Speicherbegrenzung auf die Postfächer
-baue dir ein Script welches dir direkt vom Exchangedbs die größen liefert
dies könnte ich dir zu mailen. )

cu
willi
Bitte warten ..
Mitglied: Biber
03.01.2006 um 17:09 Uhr
Moin steini,

schließe mich inhaltlich verkehrsberuhigt an: ich würde als Strategie wählen, irgendjemand zu fragen, der die Gesamtgröße der *.pst-Datei schon griffbereit hat, so wie in dem angegebenen Link der DIR-Befehl.

Dieses Zusammenstoppeln der Einzel-Ordnergrößen kann nicht der schnellste Weg sein.

Als reine VBA-Outlookvariante würde ich folgende Skizze nehmen:
- Ermitteln der "Persönlichen-Ordner"-Dateinamen/Speicherorte über Outlook
- dann über FileSystemObject-Funktionen in diesen Ordner auf dieses File-Object
- .FileSize abgreifen
- Feddich

Hat gegenüber der DIR-über-die-ganze-Platte-Mimik drei Vorteile:
a) Performanzvorteile
b) Du hast explizit nur die PST-Datei des angemeldeten Users bzw. Profils
c) Du hast kein Theater mit "langen" Byte-Angaben - der Command-Interpreter kann eben nur mit Zahlen < 10 GigaByte rechnen.

Details gerne bei Bedarf.
HTH Biber

@wiri:
Deine Variante fände ich auch von Allgemein-Interesse.
Wäre das Skript zu lang, um es hier zu posten?
Bitte warten ..
Mitglied: wiri
03.01.2006 um 17:31 Uhr
hi biber
dat Zeug könnte ich hier posten, kann ich aber erst diese Tage.
Bitte warten ..
Mitglied: Biber
03.01.2006 um 21:33 Uhr
@wiri
Danke, wiri... ist ja nix Eiliges...
Vielleicht können wir dann mal so ein "Größe der *.pst-Datei ermitteln"-Tutorial zusammenschreddern mit allen denkbaren Szenarios (lokal, Benutzerbezogen, auf dem Exchange-Server).
Diese uneinsichtigen User hören ja doch nicht auf, mehr zu mailen als M$ verkraftet... bleibt ja doch an uns hängen.

Gruß Biber
Bitte warten ..
Mitglied: steini01
04.01.2006 um 07:44 Uhr
Hallo zusammen,

vielen Dank für die Antworten!
Also die Dateien liegen im Netzwerk auf dem Fileserver (kein Exchange Server).
Ich werde mal die Variante über das FileSystemObject ausprobieren, komme warscheinlich aber erst nächste Woch dazu
Ich werde dann nochmals Rückmeldung geben, schaue aber zwischenzeitlich immer mal wieder hier rein bzgl. des Scripts von Wiri.
Also nochmals vielen Dank an alle die sich Gedanken gemacht haben.

Gruß steini.
Bitte warten ..
Mitglied: steini01
04.01.2006 um 11:51 Uhr
Hallo nochmal,

warum das Rad neu erfinden, wenns doch das meiste schon fertig gibt?
Ich habe unter folgendem Link einen entsprechenden Codeschnipsel gefunden und auf meine Bedürfnisse angepasst:

http://www.outlookcode.com/codedetail.aspx?id=680

Funktioniert fantastisch, und sogar mit UNC-Notation für nicht verbundene Netzlaufwerke.
Evtl. solltet Ihr das in Euer Tutorial mit aufnehmen, ich bin ja schließlich nicht der erste mit so einem Problem.
Nochmals vielen Dank.

Man liest sich,
Gruß steini.
Bitte warten ..
Mitglied: Biber
04.01.2006 um 17:18 Uhr
Danke, steini,

finde ich die richtige Einstellung, nicht jedes Rad neu erfinden zu wollen...
Deshalb habe ich mich auch gestern auf die oben genannten Stichworte beschränkt.

Mit dem Tutorial - ich glaube, das gehen wir erst an, wenn sich diese Punkte-Jieperei ein bisschen gelegt hat.. oder wir melden uns unter einem neuen Account "admin-teamwork" neu an.
Sonst fangen wiri, Du und ich auch noch an, uns um die Viertelpunkte zu balgen

Grüße Biber
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
Outlook & Mail
gelöst PST-Datei auf Server speichern (55)

Frage von SarekHL zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...