VBA Outlook aracılığıyla Excel'den E-posta Gönder

Bu öğretici, VBA kullanarak Excel'den Outlook aracılığıyla nasıl e-posta göndereceğinizi gösterecektir.

Etkin Çalışma Kitabını Gönderme

1234567891011121314151617181920 Fonksiyon SendActiveWorkbook(strTo As String, strSubject As String, Opsiyonel strCC As String, Opsiyonel strBody As String) As BooleanHatada Devam Et SonrakiDim appOutlook As ObjectNesne Olarak Öğeyi Karart'yeni bir Outlook örneği oluşturappOutlook = CreateObject("Outlook.Application") olarak ayarlayınmItem = appOutlook .CreateItem(0) olarak ayarlayınmItem ile.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.ActiveWorkbook.FullName ekleyin'hemen göndermek için gönder'i veya ekranda göstermek için göster'i kullanın.Göster veya .Gönderİle bitmek'nesneleri temizlemItem'i ayarla = Hiçbir şeyappOutlook'u ayarla = Hiçbir şeyBitiş İşlevi

Yukarıdaki fonksiyon aşağıdaki prosedür kullanılarak çağrılabilir.

123456789101112131415 Alt SendMail()Dim strTo As StringDim strSubject As StringString As strBody Dim'değişkenleri doldurstrTo = "[email protected]"strSubject = "Lütfen ekteki finans dosyasını bulun"strBody = "e-postanın gövdesi için buraya bir metin geliyor"'e-postayı göndermek için işlevi çağırınSendActiveWorkbook(strTo, strSubject, , strBody) = true iseMsgbox "E-posta oluşturma Başarılı"BaşkaMsgbox "E-posta oluşturma başarısız oldu!"Eğer sonAlt Bitiş

Outlook Nesne Kitaplığına başvurmak için Erken Bağlama'yı kullanma

Yukarıdaki kod, Outlook Nesnesine başvurmak için Geç Bağlama kullanır. Excel'e bir referans ekleyebilir ve tercih edilirse Erken Bağlama'yı kullanarak Outlook uygulamasını ve Outlook Posta Öğesini bildirebilirsiniz. Early Binding, kodun daha hızlı çalışmasını sağlar, ancak kullanıcının bilgisayarında aynı Microsoft Office sürümüne sahip olması gerekeceğinden sizi sınırlar.

Referans iletişim kutusunu göstermek için Araçlar menüsüne ve Referanslara tıklayın.

Kullanmakta olduğunuz Office sürümü için Microsoft Outlook Nesne Kitaplığına bir başvuru ekleyin.

Daha sonra bu referansları doğrudan kullanmak için kodunuzu değiştirebilirsiniz.

Erken bağlamanın büyük bir avantajı, size kullanılabilen nesneleri gösteren açılır listelerdir!

Etkin Çalışma Kitabından Tek Bir Sayfa Gönderme

Tek bir sayfa göndermek için, önce mevcut çalışma kitabından içinde yalnızca o sayfa bulunan yeni bir çalışma kitabı oluşturmanız ve ardından o sayfayı göndermeniz gerekir.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Fonksiyon SendActiveWorksheet(strTo As String, strSubject As String, Opsiyonel strCC As String, Opsiyonel strBody As String) As BooleanHatada GoTo eh'gerekli nesneleri tutmak için değişkenler bildirinÇalışma Kitabı Olarak Dim wbDestinationDize Olarak Dim strDestNameÇalışma Kitabı Olarak Dim wbSourceDim wsSource As Çalışma SayfasıOutApp'i Nesne Olarak KarartOutMail'i Nesne Olarak KarartınDim strTempName As StringDize Olarak strTempPath'i Dim'önce hedef çalışma kitabı oluşturwbDestination = Çalışma Kitaplarını Ayarla.AddstrDestName = wbDestination.Name'kaynak çalışma kitabını ve sayfasını ayarlawbSource = ActiveWorkbook olarak ayarlayınwsSource = wbSource.ActiveSheet olarak ayarlayın'etkin sayfayı yeni çalışma kitabına kopyalayınwsSource.Copy After:=Workbooks(strDestName).Sheets(1)'geçici bir adla kaydetstrTempPath = Environ$("temp") & "\"strTempName = "Liste " & wbSource.Name & ".xlsx"den alınmıştırwbDestination ile.SaveAs strTempPath & strTempName'şimdi hedef çalışma kitabını e-postayla gönderSet OutApp = CreateObject("Outlook.Application")OutMail'i Ayarla = OutApp.CreateItem(0)OutMail ile.To = strTo.Subject = strSubject.Body = strBody.Ekler.wbDestination.FullName ekleyin'hemen göndermek için gönder'i veya ekranda göstermek için göster'i kullanın.Display 'veya .Displayİle bitmek.Kapat Yanlışİle bitmek'postanıza eklediğiniz geçici çalışma kitabını silinstrTempPath ve strTempName'i öldür'belleği serbest bırakmak için nesneleri temizleyinwbDestination = Hiçbir şey olarak ayarlawbSource = Hiçbir şey olarak ayarlawsSource = Hiçbir şey olarak ayarlaOutMail'i Ayarla = Hiçbir ŞeyOutApp'i Ayarla = Hiçbir ŞeyÇıkış Fonksiyonueh:MsgBox Err.AçıklamaBitiş İşlevi

ve bu işlevi çalıştırmak için aşağıdaki prosedürü oluşturabiliriz

12345678910111213 Alt SendSheetMail()Dim strTo As StringDim strSubject As StringString As strBody DimstrTo = "[email protected]"strSubject = "Lütfen ekteki finans dosyasını bulun"strBody = "e-postanın gövdesi için buraya bir metin geliyor"SendActiveWorksheet(strTo, strSubject, , strBody) = True iseMsgBox "E-posta oluşturma Başarılı"BaşkaMsgBox "E-posta oluşturma başarısız oldu!"BitirAlt Bitiş
wave wave wave wave wave