
Excel çalışma sayfamızı bir makro yardımı ile nasıl kısa bir sürede E-mail gönderebileceğimizi anlatmaya çalışacağım, bu çalışmamı resim ile de destekleyeceğim.
Başlayalım, excel çalışma kitabımızı açıyoruz hangi sayfayı mail olarak göndermek istiyorsak o sayfa açık olsun...
* Çalışma sayfasına sağ tık yaparak "Kod görüntüle" diyoruz veya ALT + F11.

* Açılan Vba sayfasında "Insert" menüsünden "Modüle" yi açıyoruz.

* Açılan Modüle aşağıda vereceğim kodu kopyalayıp ehlideyazar@gmail.com yazar yerdeki e-mail adreslerini kendi e-mail adresleriniz ile değiştirin.
Sub mailgonder()
ActiveSheet.Copy 'aktif sayfayı kopyalar
With ActiveWorkbook
.SendMail Recipients:=Array("ehlideyazar@gmail.com",
"ehlideyazar@gmail.com", "ehlideyazar@gmail.com"), _
Subject:="Sipairiş Genel Durum "
.Close SaveChanges:=False 'aktif sayfayı kaydetmeden
kapatır
End With
MsgBox "Mail gönderildi"
End Sub
* Ardından Excel sayfamıza dönelim ve Geliştirici sekmesini açalım, Ekle den sonra resimdeki gibi butona tıklayalım Mouse' nin sağ tuşuna basılı tutarak menü için belirlediğimiz yere bir dörtken çizelim ve sağ tuştan parmagımızı çekelim.


* Tuşumuzu da oluşturduğumuza göre artık bir denem yapabiliriz .

İzin Ver seçeneğini seçtiğiniz de mailiniz belirlediğiniz adreslere ulaşacaktır.
Örnek Çalışma da ekliyorum Buradan bakabilirsiniz.
Alternatif Olarak;
Gönderilen E-maillerde excel içeriğinin text olarak görünmesi için (formüllü olarak görünmemesi için) aşağıda verdiğim örnek kodları kullanabilirsiniz.
Sub SendShByEmail()
Dim OutApp As Outlook.Application
Dim NewMail As Outlook.MailItem
Dim ShName As String, WbName As String
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlManual
Sheets(ActiveSheet.Name).Copy
ShName = ActiveSheet.Name
ActiveSheet.DrawingObjects.Delete
Dim X As Range
For Each X In [a1:ar56]
If X.HasFormula = True Then
X.Value = X.Value
End If
Next X
WbName = ThisWorkbook.Path & "\" & ShName & ".xls"
ActiveWorkbook.SaveAs WbName, FileFormat:=-4143
ActiveWorkbook.Close False
Set OutApp = New Outlook.Application
Set NewMail = CreateItem(olMailItem)
With NewMail
.To = "e-mail@adresiburaya.com" & ";" & "e-mail@adresiburaya.com" & ";" & "e-mail@adresiburaya.com" & ";" & "e-mail@adresiburaya.com" & ";" & "e-mail@adresiburaya.com"
.Subject = "Sipariş Genel Durum"
.Body = "Sipariş Genel Durum Ektedir. İyi Günler."
.Attachments.Add WbName
.Save
.Send
End With
Set NewMail = Nothing
Set OutApp = Nothing
Set VBComp = Nothing
Kill WbName
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
For Each X In [a1:ar56]; a1:ar56 olan kısım excel sayfası içerisinde hangi alanların mail ile gönderileceğini belirler.
Mail göndermeden önce sayfa ön izleme yaparak sayfa düzenlemsi yapabilirsiniz.
mail gönder tuşuna tıkladığınızda e-mail otomatik olarak gönderilir.
Gönderilmiş mailler klasöründe görebilirsiniz.
merhaba kod için teşekkürler. benim şöyle bir eklemeye ihtiyacım var. Ana sayfadan formüller ile veri alan 60 ayrı sheetım var bunları ayrı ayrı mail göndermem gerekiyor. İlgili sayfalarda eklenecek mail bilgileri var. Sizin kodda ilgili sayfadan maili almasını yaptım ancak çok kod bilgim yok diğer kafamdakileri ekleyemedim bir türlü. İsteğim her sayfada ayrı tuş koyarak sadece oı sayfayı ayırmak(sizin kod bunu yapıyor) ayırdığı sayfada formülleri öldürmesi ve maile ekleyerek ön izleme yaptıkdan sonra send tuşuna ben basıyım istiyorum.
YanıtlaSilMerhaba,
SilKonu güncellenmiştir. Diğer soru ve görüşleriniz için iletişim kısmını kullanabilirsiniz.
İyi Günler
outlook 2016 da konu kısmına yazılan hiç bir şey gözükmüyor ve konu yok şeklinde iletiliyor mailler. bunu nasıl düzeltebiliriz?
YanıtlaSilKonus kısmında : .Subject = "Sipariş Genel Durum" tırnak içerisinde olan kısım konuda yer alan alandır.
Sil