VBATools

Ostrzeżenie o braku załącznika

by on Oct.19, 2010, under Outlook, Porady

Często problemem, zwłaszcza młodych ludzi ogarniętych zapałem jak i chęcią wykonania zadań w jak najkrótszym czasie, jest „roztargnienie” podczas wysyłania wiadomości z załącznikami. Często wysłane wiadomości nie zawierają załączników, choć powinny.

W dość prosty sposób można zabezpieczyć się przed tą dość krępującą sytuacją umieszczając poniższy kod w module klasy ThisOutlookSession.

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'MVP OShon from VBATools.pl
Dim oMail As MailItem, kom
If Item.Class = 43 Then 
 Set oMail = Item
 If InStr(1, LCase(oMail.To), LCase("Monika")) > 0 And _
 InStr(1, LCase(oMail.Subject), LCase("Raport")) > 0 And _
 oMail.Attachments.Count = 0 Then
 kom = MsgBox("Nie dołączono raportu." & vbCr & _
 "Czy chcesz przerwać nadanie tej wiadomości?", _
 vbYesNo + vbDefaultButton1 + vbQuestion, _
 "Ostrzeżenie o braku załącznika VBATools.pl")
 If kom = vbYes Then Cancel = True: Exit Sub
End If
End If
End Sub

W przypadku nadania wiadomości do adresata „Monika” z tematem zawierającym słowo „Raport” bez załączników otrzymujemy ekran z zapytaniem:

Brak_zalacznika

Rys 1. Ekran z zapytaniem o dalsze losy wiadomości bez załącznika.

Możemy rozwinąć pow. kod, aby nadanie wiadomości bez załącznika wymusiło wskazanie pliku, który będzie dołączony do wiadomości.

Należy dodać w developerze Outlooka kontrolkę Excela oraz umieścić poniższą procedurę zamiast poprzednio wymienionej.

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'MVP OShon from VBATools.pl
Dim oMail As MailItem, kom, x&
Dim xApp As New Excel.Application
Dim fileName As Variant

If Item.Class = 43 Then 
Set oMail = Item
 If InStr(1, LCase(oMail.To), LCase("Monika")) > 0 And _
 InStr(1, LCase(oMail.Subject), LCase("Raport")) > 0 And _
 oMail.Attachments.Count = 0 Then
 kom = MsgBox("Nie dołączono raportu." & vbCr & _
 "Czy chcesz podpiąć pliki do wiadomości?", _
 vbYesNoCancel + vbDefaultButton1 + vbQuestion, _
 "Ostrzeżenie o braku załącznika VBATools.pl")

  If kom = vbYes Then
    fileName = xApp.GetOpenFilename(FileFilter:="Wszystkie pliki (*.*),*.*", _
    Title:="Wybierz pliki załącznika", _
    MultiSelect:=True)
    If Not IsArray(fileName) Then
      MsgBox "Nie wybrano żadnego pliku.": Exit Sub
    Else
      For x = LBound(fileName) To UBound(fileName)
      oMail.Attachments.Add fileName(x)
    Next x
    oMail.Save
  End If
 ElseIf kom = vbCancel Then
 Cancel = True
 End If
End If
End Sub

Brak_zalacznika2

Rys 2. Ekran z zapytaniem o pliki załącznika.

Tak, oznaczać będzie wyświetlenie okna wskazania plików (rys 3). Anulowanie komunikatu przerwie procedurę nadania wiadomości.

Brak_zalacznika3

Rys 3. Podpinanie plików do wiadomości.

Z przytrzymaniem przycisku Ctrl można podpiąć dowolne pliki, jako załączniki wiadomości.

Brak_zalacznika4

Rys 4. Wskazane wcześniej załączniki dołączone przed nadaniem wiadomości.

Ostatni rys w tym artykule przedstawia załączniki wiadomości zaraz przed wysłaniem.

 

Errata dotycząca wersji 2013.

W niej obrazki dołączone do wiadomości (np w podpisie) są traktowane podobnie jak załączniki. To też należy wziąć to pod uwagę i zwiększyć ilość podczas warunku oMail.Attachments.Count = 0. Wartość tą należy odpowiednio zwiększyć.

(c) Shon Oskar – www.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 Joanna Subik
Profile picture of Karol Stilger
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