VBATools

Usunięcie plików tymczasowych Outlooka

by on Sep.22, 2010, under Outlook, Porady

Outlook radzi sobie z prezentacją załączonych do wiadomości plików. Jednakże, co dzieje się, kiedy plik załącznika jest zapisywany w Outlook a następnie wysyłany do adresata? Co dzieje się, kiedy tendencyjnie obrabiany jest jeden plik?

Co prawda prawidłowo jest zapisać plik przed obróbką na dysku w przeznaczonym do tego katalogu a następnie dokonać modyfikacji poza klientem poczty (mamy wtedy kontrolę nam plikiem), jednakże praktyka, która jest przedmiotem artykułu jest dość często spotykana. Outlook podczas otwierania i modyfikacji pliku nie zapisuje go wprost w Outlook.pst, ale w katalogu tymczasowym. Taki proces jest bezkolizyjny, gdy użytkownik sporadycznie realizuje tę czynność (zwłaszcza na różnych plikach). Jeśli plików w katalogu jest wiele to Outlook tworzy sobie nowy katalog.

Proces oczyszczania dysku nie opróżnia nam plików z tych katalogów, pomimo tego, iż kopia tych samych plików została umieszczona w „Wysłanych elementach”, co czyni nasz dysk i system bardziej obciążony. Usunięcie pliku z wiadomości powinno usunąć również plik w katalogu na naszym dysku, jednak czasem nie jest to realizowane. Usunięcie zaś pliku z katalogu nie kasuje kopii tego pliku z wiadomości Outlook.

OL_Nie_mozna_otworzyc_plikuCo więcej, podczas obróbki dużej ilości tak samo nazywających się plików może dość do przepełnienia. Polega to na tym, iż kopia tak samo nazywających się plików przekracza 99. W tym momencie Outlook nie pozwala nam umieścić w wiadomości pocztowej nowego załącznika o identycznej jak poprzednio nazwie.

 

Poniższa procedura „Kasowanie_plikow_tymczasowych” jest opracowana z myślą o czyszczeniu plików we wszystkich katalogach tymczasowych Outlooka.

Option Explicit
Declare Function SHGetSpecialFolderLocation Lib "Shell32.dll" _
 (ByVal hwndOwner As Long, ByVal nFolder As Long, _
 pidl As ITEMIDLIST) As Long

Declare Function SHGetPathFromIDList Lib "Shell32.dll" _
 Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
 ByVal pszPath As String) As Long

Public Type SH_ITEMID
 cb As Long
 abID As Byte
End Type

Public Type ITEMIDLIST
 mkid As SH_ITEMID
End Type

Public Declare Function SetFileAttributes Lib "kernel32" _
Alias "SetFileAttributesA" (ByVal lpFileName As String, _
ByVal dwFileAttributes As Long) As Long

Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const MAX_PATH As Integer = 260

Private Function fGetSpecialFolder(CSIDL As Long) As String
 Dim sPath As String
 Dim IDL As ITEMIDLIST
 fGetSpecialFolder = ""
 If SHGetSpecialFolderLocation(0, CSIDL, IDL) = 0 Then
 sPath = Space$(MAX_PATH)
 If SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath) Then
 fGetSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1) & ""
 End If
 End If
End Function

Public Sub Kasowanie_plikow_tymczasowych()
On Error GoTo ErrMess
    Dim MyArray(300) As String, i&, file_name$, path$
    file_name = Dir$(fGetSpecialFolder(32) & "Content.Outlook" & "\*.*", vbDirectory)
    i = 0
    Do While (Len(file_name) > 0) And (i < 101)
        MyArray(i) = file_name
        i = i + 1
        file_name = Dir$()
    Loop
    For i = 1 To UBound(MyArray)
        If Len(MyArray(i)) > 0 And MyArray(i) <> ".." Then
            path = CStr(fGetSpecialFolder(32) & "Content.Outlook\" & MyArray(i))
            Call MakeMeArchive(path)
            On Error Resume Next 'w przypadku braku plików w folderze
            Kill (path & "\*.*")
        End If
    Next i   
    MsgBox "Wykonano czyczenie folderów.", vbExclamation, "MVP OShon VBATools.pl"

    Exit Sub
ErrMess:
    MsgBox Err.Description, vbExclamation, "MVP OShon VBATools.pl"
End Sub

Private Sub MakeMeArchive(path$)
Dim fso As Object, fsoFile As Variant, ile&
Set fso = CreateObject("Scripting.FileSystemObject")
 For Each fsoFile In fso.GetFolder(path).Files
 SetFileAttributes fsoFile, FILE_ATTRIBUTE_ARCHIVE
 Next fsoFile
End Sub

Aby osadzić procedurę „Kasowanie_plikow_tymczasowych” pod przyciskiem w menu MS Outlook, polecam uwadze ten artykuł.


(c) Shon Oskarwww.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

:, , , , , ,

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of Joanna Subik
Profile picture of Anorak
Profile picture of marcinmachalowski
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borzęcka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of Łukasz Kałużny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spychała