Outlook İçin Hazırlanan Ama Çalışmayan Makro

25/05/2022, 11:37

tarkanaykın

merhaba arkadaşlar, Outlook 2007 kullanıyorum, amacım gönderilen iletilerin bir kopyasını otomatik olarak istediğim diske kaydetmek, bir makro buldum ve outlook üzerinde gerekli kuralları da oluşturabiliyorum ama hiç çalışma belirtisi yok, bu konuda yardımcı olabilecek varsa çok memnun olurum, teşekkürler.


Public Sub SaveMailDisk(itm As Outlook.MailItem)
On Error Resume Next
Dim saveFolder As String
saveFolder = "D:\OUTLOOK YEDEK\" 'Maillerin kaydedileceği dosya
Dim dateFormat
dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd HH-mm-ss") ' Mailin dosya adına alınma zamanını eklemek için
Dim dosyaadi As String
dosyaadi = saveFolder & "\[" & dateFormat & "] [" & itm.Sender.Name & "] [" & degistir(itm.Subject) & "].msg"
itm.SaveAs dosyaadi ' Maili diske kaydeder.

For Each objAtt In itm.Attachments 'Mail'deki ekleri diske kaydeder.
objAtt.SaveAsFile saveFolder & "\[" & dateFormat & "] [" & itm.Sender.Name & "] [" & degistir(itm.Subject) & "] " & objAtt.DisplayName
Set objAtt = Nothing
Next

End Sub

Function degistir(yazi As String) 'Dosya adındaki geçersiz karakterleri temizler
On Error Resume Next
yk = "_" 'Geçersiz karakterin yerine ne koyacağız?
yazi = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(yazi, ":", yk), "*", yk), "\", yk), "/", yk), "<", yk), ">", yk), "|", yk), """", yk), "?", yk)
degistir = yazi
End Function
25/05/2022, 13:25

atoykan

Yedeklemek istediğiniz mailleri depolamak üzeri bir pst dosyası oluşturup istediğiniz diske kaydedin ve belirlediğiniz kriterlerdeki maillerin kopyalanması için kural yöneticisinden bir kural oluşturun bunun için haricen bir makro hazırlamaya ihtiyacınız yok.
25/05/2022, 14:21

tarkanaykın

Tamam teşekkürler sayın atoykan, aslinda zaten sıkıntı da orda , outlookun kuralları içinde, atıyorum masaüstüne kaydetme seçeneği yok, benim istediğim tam olarak; bir mesaj gönderildiği an o gönderilen dosyanın bi kopyası masaüstüne yerleştirilsin, neden çünkü gonderme isini kişinin kendisi yapmayacak, exceldeki bi makro yapacak, dolayısıyla kişinin o an o belgeden haberi olsun diye masaüstüne gelmesini istiyorum, yoksa belge otomatik olarak gönderilecek ama pc yi kullanan da bu dosyayı görmeyecek. Önerileriniz için teşekkür ederim, kolay gelsin.
25/05/2022, 14:27

atoykan

Maili otomatik gönderirken ilgili kullanıcıya mail gönderildiğine ilişkin bildirim amaçlı bir mail daha atmayı düşünün. Bilgilendirme mailine istinaden gönderilen maillerden kontrol edilebilir, böylece alan tasarrufu da sağlamış olursunuz.
26/05/2022, 15:41

tarkanaykın

tabi o da olabilir, hem yer tasarrufu açısından önemli bir yöntem, teşekkür ederim, yalnız ben şöyle bir makro buldum yabancı bir siteden, işimi de gördü hallettim istediğim oldu, çok teşekkür ederim emeği geçenlere.

önce outlook'ta 'kural oluşturucu' dan ilgili ayarları yaptım (x adlı kişiden y konulu bir ileti gelirse ilgili makroyu (aşağıda) çalıştır) sonra bu makroyu o ayarların şartına bağladım ve sonuç çok iyi, ilgilenenler kullansın.

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "C:\Users\pc\Desktop"
For Each objAtt In itm.Attachments
If InStr(objAtt.DisplayName, ".xlsx") Then
objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
End If
Set objAtt = Nothing
Next



End Sub