KutoolsforOffice — Tek çözüm, beş güçlü araç.Daha az çabayla daha fazlasını başarmak.

Excel öğreticisi – Excel'den e-posta gönderme

YazarSiluvia Değiştirme Tarihi

Normalde e-posta göndermek için Outlook, Gmail gibi e-posta istemcilerini kullanırız. Ancak birçok kullanıcı verilerini Excel çalışma kitaplarında saklar ve bu veriler üzerinde çalışırken içlerinden bir kısmını başkalarıyla paylaşmak ister. Bu durumda, e-posta istemcisini ayrı ayrı açmaya gerek kalmadan zaman kazanmak adına e-postaları doğrudan Excel çalışma kitabı içinden gönderme ihtiyacı doğar. Bu adım adım kılavuz, farklı koşullar altında Excel’den nasıl e-posta gönderileceğini gösterir.

Not: Aşağıdaki yöntemleri uygulamadan önce, bilgisayarınızda bir Outlook e-posta istemcisi yapılandırmanız ve onu varsayılan e-posta istemciniz olarak belirlemeniz gerekir.

 İçindekiler:[ Gizle ]

(Aşağıdaki veya sağdaki içerik tablosundaki herhangi bir başlığa tıklayarak ilgili bölüme gidin.)

1. Excel'den e-posta göndermenin temelleri

Bu bölüm, Excel'den e-posta göndermenin temellerini tanıtıyor.

1,1 Excel'den, Excel'in yerleşik işlevleriyle e-posta gönderme

Yalnızca Alıcı, Konu, Cc ve gövde alanlarını içeren basit e-postalar göndermek istiyorsanız, Excel’in yerleşik özellikleri size yardımcı olabilir.


1,1.1 Excel'den formül kullanarak e-posta gönderme

Aşağıdaki tabloda gösterildiği gibi, belirtilen alanlara göre Excel’den farklı e-postalar göndermek için bu alanların hücre başvurularını kullanarak çeşitli Köprü (Hyperlink) formülleri oluşturabilirsiniz. E-posta köprülerini oluşturduktan sonra, otomatik olarak e-posta göndermek istediğiniz köprüye tıklamanız yeterlidir.

Not: Alıcı veya Cc alanlarında birden fazla kişi varsa, lütfen bunları noktalı virgülle (;) ayırın.

Bu bölüm, Köprü formülüne e-posta adresi, Cc alıcısı/alıcıları, konu satırı ve gövde metnini ayrı ayrı nasıl ekleyeceğinizi göstermek üzere dört parçaya ayrılmıştır. Lütfen aşağıdaki adımları uygulayın.

"KÖPRÜ" (HYPERLINK) işlevinin söz dizimi ve bağımsız değişkenleri aşağıdaki gibidir.

Söz dizimi

HYPERLINK(link_location, [friendly_name])

Bağımsız değişkenler

"Bağlantı_konumu" (zorunlu): Açılacak belgenin yolunu ve dosya adını içerir;
İpucu: Bu öğreticide, alıcının E-posta Adresi, Cc alıcısı/alıcıları, konu satırı ve gövde metni gibi bir e-posta için gerekli tüm alanlar ilk bağımsız değişken olan "bağlantı_konumu"na yerleştirilmelidir.
"Görünen_ad" (isteğe bağlı): Hücrede görüntülenecek atlam değeridir.

1,1.1,1 Köprü formülüne E-posta Adresi ekleme

Burada bir e-posta alıcısı eklemek için formülün bir parçası olarak "mailto:" ifadesini kullanıyoruz. Bu örnekte ilk alıcının e-posta adresi B2 hücresinde yer aldığından, "mailto:" ifadesini ekleyip B2 hücresine başvurmalıyız.

“mailto:”&B2

1. Köprünün görüntüleneceği hücreyi seçin. Bu örnekte F2 hücresini seçiyoruz.

2. Ardından aşağıdaki formülü bu hücreye girin.

=HYPERLINK("mailto:"&,B2)

Not: "Enter" tuşuna bastığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi bir köprü oluşturulur. Bağlantıya tıkladığınızda Outlook’ta yeni bir e-posta açılır ve alıcının e-posta adresi otomatik olarak Alıcı alanına yerleştirilir.

Alıcının e-posta adresi artık Köprü formülüne eklenmiştir. İhtiyacınıza göre konu satırını, Cc alıcılarını ve gövde metnini aşağıdaki adımları izleyerek eklemeye devam edebilirsiniz.


1,1.1,2 Köprü formülüne Cc alıcısını/alıcılarını ekleme

Köprü işlevine Cc alıcısını veya alıcılarını eklemek için formülün içine aşağıdaki gibi "?cc=" ifadesini dahil edin.

"?cc=" & C2
C2 hücresi, CC alıcısının E-posta Adresi içerir.

F2 hücresindeki formül şu şekilde olmalıdır:

=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2)


1,1.1,3 Köprü formülüne konu satırı ekleme

Köprü işlevine konu satırı eklemek için formülün bir parçası olarak "&subject=" ifadesini aşağıda gösterildiği gibi ekleyin.

"&subject="& D2
D2 hücresi E-posta Konusu içerir.

F2 hücresindeki formül artık aşağıdaki gibi görünmelidir:

=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2 &, "&subject="&, D2)


1,1.1,4 Satır sonları içeren gövde metnini Köprü formülüne ekleme

Son adım, Köprü formülüne gövde metnini eklemektir. Örnekte görüldüğü gibi, E2 hücresindeki iki satırlık metin bir satır sonuyla ayrılmıştır ve e-posta gövdesinde bu satır sonunun korunmasını istiyorsunuz. Peki Outlook, bu satır sonunu tanır mı? Hemen kontrol edelim.

Gövde metnini Köprü formülüne eklemek için formülün içine “&body=” ifadesini aşağıdaki gibi dahil etmeniz gerekir.

"&body="& E2
E2 hücresi e-postanın gövde metnini içerir.

F2 hücresindeki formül artık aşağıdaki gibi görüntülenmektedir:

=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2 &, "&subject="&, D2 &, "&body="&, E2)

Not: Bağlantıya tıklayıp "Enter" tuşuna bastığınızda, Yeni E-posta penceresinde e-posta gövdesinin tek satırda görüntülendiğini görebilirsiniz.

E-posta gövdesinin ayrı satırlarda görüntülenmesi için, satır sonu eklemek istediğiniz metne "%0A" taşıma işareti karakter kodunu ekleyerek hücre içeriğini güncellemeniz gerekir. Ekran görüntüsüne bakın:


1,1.1,5 Köprü için görüntülenecek metni belirtme

Yukarıdaki adımlarda, e-posta alanlarıyla birlikte **Link_konumu** (Link_location) bağımsız değişkenini tamamladık. Bu bölümde ise bir sonraki bağımsız değişken olan **[kolay_ad]** (friendly_name) kısmını dolduracağız.

Bu örnekte, köprü hücresi “xx kişisine e-posta” metnini göstermelidir; burada “xx”, A2 hücresindeki alıcının adıdır. Bu nedenle F2 hücresindeki formül şu şekilde güncellenmelidir:

=HYPERLINK("mailto:" &, B2 &, "?cc=" &, C2 &, "&subject="&, D2 &, "&body="&, E2, "Email to "&,A2)

Sonucu almak için Enter tuşuna basın.

Bu formül hücresini seçin ve diğer e-posta köprülerini oluşturmak için "Otomatik Doldurma İşareti"ni aşağı doğru sürükleyin. Ekran görüntüsüne göz atın:


1,1.2 Excel'den Köprü işleviyle e-posta gönderme

Yukarıdaki Köprü formülünü kullanmanın yanı sıra, Excel’de “Bağlantı Oluştur” işlevini kullanarak manuel olarak bir e-posta köprüsü de oluşturabilirsiniz. Bu bölüm, ilgili adımları detaylı şekilde gösterecektir.

1. Köprü eklemek istediğiniz hücreye sağ tıklayın ve bağlam menüsünden “Bağlantı” seçeneğini seçin.

2. Açılan "Bağlantı Oluştur" iletişim kutusunda aşağıdaki yapılandırmayı yapmanız gerekir.

2,1) Sol bölmede "E-posta Adresi"ni seçin.
2,2) "Görüntülenecek metin" metin kutusuna hücrede görüntülenmesini istediğiniz metni yazın;
İpucu: Bu iletişim kutusunda hücre başvurularını kullanamazsınız. Bu nedenle e-posta alanlarını aşağıdaki gibi manuel olarak yazmalısınız.
2,3) "E-posta adresi" metin kutusuna aşağıdaki E-posta Adresi yazmanız gerekir.
mailto:E-posta Adresi
Lütfen "E-posta Adresi" metnini gerçek E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi varsa noktalı virgülle ayırın.
2,4) "Konu" metin kutusunda E-posta Konusu ve e-posta gövdesini burada belirleyebilirsiniz. Aşağıdaki gibi yapılandırın:
E-posta Konusu&body=E-posta gövdesi
Bu örnekte "Monthly sale&body=Hi,%0AEmail received" yazdım.
burada konu Monthly sale;
ve
e-posta gövdesi:
Merhaba,
E-posta alındı. ("%0A", Outlook tarafından tanınabilen Taşıma İşareti karakter kodudur)
2,5) Köprüyü kaydetmek için "Tamam" düğmesine tıklayın. Ekran görüntüsüne bakın:

Köprüye tıkladığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi belirtilen Alıcı, Konu ve Gövde alanlarını içeren bir Outlook e-postası oluşturulur.

Notlar:

1) Bu yöntemle her e-posta köprüsünü tek tek manuel olarak oluşturmanız gerekir.
2) Bu yöntemle e-postalara CC alanını ekleyemezsiniz. Bu nedenle CC alanına ihtiyacınız varsa, yeni açılan e-posta penceresinden eklemelisiniz.

1,2 Hücrelerdeki birden fazla alıcıya VBA betiğiyle e-posta gönderme

Yukarıdaki örnekte, bir hücrede noktalı virgülle ayrılmış birden fazla e-posta adresinin görüntülenebildiğini görebilirsiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta adresi listeniz varsa ve hepsine aynı anda ya da ayrı ayrı e-posta göndermek istiyorsanız, aşağıdaki VBA kodu size yardımcı olabilir.


1,2.1 Hücrelerdeki birden fazla alıcıya VBA betiğiyle e-posta gönderme

1. E-postayı göndermek istediğiniz tüm e-posta adreslerini içeren çalışma sayfasında, "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basın.

2. "Microsoft Visual Basic for Applications" penceresinde "Ekle" > "Modül" seçeneğine tıklayıp aşağıdaki kodu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: E-posta Adresi listesine e-posta gönderme

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. Kodu çalıştırmak için "F5" tuşuna basın; ardından "Kutools for Excel" iletişim kutusu açılacaktır. E-posta Adresi listesini seçip "Tamam" düğmesine tıklayın.

'Kutools for Excel' iletişim kutusunun, e-posta adresleri listesini istediği ekran görüntüsü

Notlar:

1) Yukarıdaki iletişim kutusunun açılmasını istemiyorsanız ve E-posta Adresi aralığını doğrudan kodda belirtmek istiyorsanız lütfen şu satırı değiştirin:
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
ile
Set xRg = Range("A2:A7")
2) Kendi E-posta Konusu ve gövdenizi aşağıdaki satırlarda belirtebilirsiniz:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Yeni ileti penceresini açmadan e-postayı doğrudan göndermek istiyorsanız şu satırı değiştirmeniz gerekir:
.Display
ile
.Send

Kodu çalıştırdıktan sonra, Aralık Seç içindeki tüm E-posta Adresi’ler, ileti penceresinin Alıcı alanına eklenecektir. Ekran görüntüsüne göz atın:

Alıcı alanına tüm e-posta adreslerinin girildiği e-posta mesajı penceresinin ekran görüntüsü


1,2.2 Hücrelerde listelenen her alıcıya ayrı ayrı e-posta gönderme (VBA betiğiyle)

Yukarıdaki kod, Aralık seçimi içindeki tüm e-posta adreslerini ileti penceresinin Alıcı alanına ekler. Eğer alıcıların birbirlerinin e-posta adreslerini görmemesini istiyorsanız ve hücrelerdeki her e-posta adresine ayrı ayrı ileti göndermek istiyorsanız, aşağıdaki VBA betiğini deneyebilirsiniz.

1. E-posta göndermek istediğiniz tüm e-posta adreslerini içeren çalışma sayfasında, "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basın.

2. "Microsoft Visual Basic for Applications" penceresinde **Ekle > Modül** seçeneğine tıklayıp aşağıdaki kodu **Modül (Kod)** penceresine yapıştırın.

VBA kodu: Hücrelerdeki her e-posta Adres Listesi adresine ayrı ayrı e-posta gönderme

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    Dim xRg As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For Each xRgEach In xRg
        xRgVal = xRgEach.Value
        If xRgVal Like "?*@?*.?*" Then
            Set xMailOut = xOutApp.CreateItem(olMailItem)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. Ardından "Araçlar" > "Başvurular" seçeneğine tıklayın. "Başvurular – VBAProject" iletişim kutusunda "Microsoft Outlook 16.0 Nesne Kitaplığı" seçeneğini bulun, işaretleyin ve değişiklikleri kaydetmek için "Tamam" düğmesine tıklayın.

Excel'de 'Başvurular – VBAProject' iletişim kutusunun, Microsoft Outlook 16.0 Nesne Kitaplığı seçeneğinin işaretli olduğu ekran görüntüsü

4. Kodu çalıştırmak için "F5" tuşuna basın; böylece "Kutools for Excel" iletişim kutusu açılacaktır. E-posta Adresi listesini seçip "Tamam" düğmesine tıklayın.

'Kutools for Excel' iletişim kutusunun, e-posta adres listesi seçimini istediği ekran görüntüsü

Notlar:

1) Yukarıdaki iletişim kutusunun açılmasını istemiyorsanız ve E-posta Adresi aralığını doğrudan kodda belirtmek istiyorsanız lütfen şu satırı değiştirin:
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
ile
Set xRg = Range("A2:A7")
2) Kendi E-posta Konusu ve gövdenizi aşağıdaki satırlarda belirtebilirsiniz:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Yeni ileti pencerelerini açmadan e-postayı doğrudan göndermek istiyorsanız şu satırı değiştirmeniz gerekir:
.Display
ile
.Send

Bu örnekte, Aralık seçimi içinde altı adet e-posta adresi bulunduğundan, aşağıdaki ekran görüntüsünde gösterildiği gibi, To alanında ayrı e-posta adres listesi bulunan altı adet Outlook ileti penceresi otomatik olarak oluşturulacaktır.

Alıcı alanlarında ayrı e-posta adresleri olan birden fazla Outlook mesaj penceresinin ekran görüntüsü

5. Son olarak, e-postaları tek tek göndermek üzere "Gönder" düğmesine tıklayın.


2. Excel'den gönderilen e-postalara ek ekleme veya Outlook imzası ekleme (VBA betikleriyle)

Bu bölüm, Excel'den gönderilen e-postalara nasıl ek ekleneceğini ve Outlook varsayılan imzasının nasıl ekleneceğini gösterir.

2,1 Excel'den gönderilen e-postalara Ek Ekle ekleme

Burada farklı Ek Ekle senaryolarını açıklıyoruz; ihtiyaçlarınıza en uygun yöntemi seçebilirsiniz. Bu bölümde şunları öğrenebilirsiniz (ilgili yönteme gitmek için aşağıdaki bağlantılardan birini tıklayın):


2,1.1 Belirli bir dosyayı ek olarak e-posta ile gönderme

Excel'de bir klasördeki bir veya daha fazla dosyayı e-posta ekleri olarak göndermek için aşağıdaki VBA kodunu kullanabilirsiniz.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül" seçeneğine tıklayın ve ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.

VBA kodu: Excel'den bir klasördeki dosyaları ek olarak e-postayla gönderme

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini kendi alıcınızın E-posta Adresi ile değiştirin;
2) ".Subject = "test"" ve ".HTMLBody = "test"" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) İhtiyacınıza göre CC ve BCC alıcılarını ekleyebilirsiniz. Sadece ".To = xxx@aaa.com" satırının altına aşağıdaki iki satırı ekleyin.
.CC = "email address"
.BCC = "email address"

3. Ardından "Araçlar" > "Referanslar" seçeneğine tıklayın. Açılan "Referanslar – VBAProject" iletişim kutusunda "Microsoft Outlook 16.0 Nesne Kitaplığı" onay kutusunu bulun, işaretleyin ve değişiklikleri kaydetmek için "Tamam" düğmesine tıklayın.

Excel'de 'Başvurular – VBAProject' iletişim kutusunun, Microsoft Outlook 16.0 Nesne Kitaplığı seçeneğinin işaretli olduğu ekran görüntüsü

4. Kodu çalıştırmak için "F5" tuşuna basın; ardından bir "Gözat" penceresi açılacak. Lütfen e-postaya eklemek istediğiniz dosyaları seçin ve "Tamam" butonuna tıklayın.

Exce'de bir e-postaya eklemek için dosya seçmeye yarayan 'Gözat' penceresinin ekran görüntüsü

Ardından bir ileti penceresi açılır ve seçilen dosyaların Ekli alanına eklendiğini görürsünüz.

Seçilen dosyaların ek olarak görüntülendiği Outlook mesaj penceresinin ekran görüntüsü


2,1.2 Geçerli Çalışma Sayfası'yi ek olarak e-postayla gönderme

Excel'de geçerli çalışma sayfasını ek olarak e-postayla göndermek istiyorsanız, bu bölümdeki VBA betiğini kullanabilirsiniz.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül" seçeneğine tıklayın ve ardından aşağıdaki VBA kodunu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Geçerli Çalışma Sayfası'yi ek olarak e-postayla gönderme

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
2) ".Subject = "kte features"" ve ".Body = " Lütfen bu belgeyi kontrol edip okuyun."" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) Aşağıdaki iki satırda:
.CC = "email address"
.BCC = "email address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti 'ekleyin.

3. Kodu çalıştırmak için "F5" tuşuna basın; ardından Geçerli Çalışma Sayfası, bir Excel çalışma kitabı olarak kaydedilir ve otomatik olarak bir ileti penceresine eklenir. Ekran görüntüsüne bakın:

Geçerli çalışma sayfasının Excel çalışma kitabı olarak kaydedilip eklendiği Outlook mesaj penceresinin ekran görüntüsü

Not: Yalnızca Geçerli Çalışma Sayfası’nı içeren ekli çalışma kitabı, orijinal çalışma kitabıyla aynı isme sahiptir ve kod çalıştırıldığında bu isim “Çalışma Kitabı Adı”na eklenir.


2,1.3 Geçerli Çalışma Kitabı'yi ek olarak e-postayla gönderme

Excel’de geçerli çalışma sayfasını ek olarak e-postayla göndermeyi öğrendikten sonra, tüm çalışma kitabını ek olarak e-postayla göndermenize yardımcı olacak başka bir VBA betiği sunuyoruz. Lütfen aşağıdaki adımları izleyin.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde **Ekle > Modül** seçeneğine tıklayın ve ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.

VBA kodu: Excel'den Geçerli Çalışma Kitabı'yi ek olarak e-postayla gönderme

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
2) ".Subject = "kte features"" ve ".Body = " Lütfen bu belgeyi kontrol edip okuyun."" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) Aşağıdaki iki satırda:
.CC = "email address"
.BCC = "email address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti ' ekleyin.

3. Kodu çalıştırmak için "F5" tuşuna basın; ardından Geçerli Çalışma Kitabı, ileti penceresine otomatik olarak eklenir. Ekran görüntüsüne bakın:

Geçerli çalışma kitabının otomatik olarak eklendiği Outlook mesaj penceresinin ekran görüntüsü


2,1.4 Tüm çalışma kitabını PDF ek olarak e-postayla gönderme

Çoğu kişi, bir Excel çalışma kitabını PDF dosyası olarak kaydedip ardından başkalarına e-posta eki olarak göndermeyi tercih eder. Bu bölümde, çalışma kitabını manuel olarak PDF’ye dönüştürmeden, açık olan mevcut çalışma kitabını doğrudan Excel’den PDF eki olarak e-posta ile göndermenin yolunu göstereceğim.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde **Ekle > Modül** seçeneğine tıklayın, ardından aşağıdaki VBA kodunu **Modül (Kod)** penceresine yapıştırın.

VBA kodu: Tüm çalışma kitabını PDF ek olarak e-postayla gönderme

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
2) .Subject = "test" ve .Body = "test" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti ' ekleyin.
4) PDF Dosyaları adı, orijinal çalışma kitabının adıyla aynı olacaktır. Ayrıca kodu çalıştırdığınız zaman da dosya adına eklenecektir. Dosya adına zaman damgası eklemek istemiyorsanız lütfen aşağıdaki satırdan & Format(Now, "dd-mmm-yy h-mm-ss") kısmını kaldırın.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"

3. Kodu çalıştırmak için "F5" tuşuna basın. Ardından, Geçerli Çalışma Kitabı otomatik olarak yeni bir ileti penceresine PDF dosyaları eki olarak eklenir. Ekran görüntüsüne bakın:

Geçerli çalışma kitabının PDF dosyası olarak eklendiği Outlook mesaj penceresinin ekran görüntüsü


2,1.5 Geçerli Çalışma Sayfası'yi PDF ek olarak e-postayla gönderme

Örneğin, "Aylık satışlar" adlı bir çalışma kitabınız var ve "satış raporu" adlı çalışma sayfasında satış raporu tablonuzu tamamladınız. Bu çalışma sayfasını meslektaşlarınıza PDF dosyası olarak göndermek istiyorsanız, aşağıdaki VBA kodu size yardımcı olacaktır.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül" seçeneğine tıklayıp aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.

VBA kodu: Geçerli Çalışma Sayfası'yi PDF ek olarak e-postayla gönderme

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
2) .Subject = "test" ve .Body = "test" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti ' ekleyin.
4) PDF Dosyaları adı şu şekilde olacaktır: orijinal çalışma kitabının adı_orijinal çalışma sayfasının adı. Bu örnekte PDF dosyasının adı Monthly sales_sales report olacaktır.

3. Kodu çalıştırmak için "F5" tuşuna basın. Ardından, Geçerli Çalışma Sayfası otomatik olarak yeni bir ileti penceresine PDF Dosyaları eki olarak eklenir. Ekran görüntüsüne bakın:

Geçerli çalışma sayfasının PDF dosyası olarak eklendiği Outlook mesaj penceresinin ekran görüntüsü


2,2 Excel'den gönderilen e-postalara Outlook imzası ekleme

Yukarıdaki örneği ele alalım: Excel’den “Geçerli Çalışma Sayfası”nı PDF olarak ekleyip e-posta göndermek için yukarıdaki VBA kodunu kullanıyorsunuz, ancak Outlook imzası ileti penceresine otomatik olarak eklenemiyor. Excel üzerinden gönderilen e-postada Outlook’un varsayılan imzasını korumak için aşağıdaki yöntem işinize yarayacaktır.

Aşağıda iki adet VBA kodu yer almaktadır.

VBA Kodu 1: Outlook imzanızı korumanıza yardımcı olan kod.

VBA Kodu 2: Geçerli çalışma sayfasını PDF ek olarak e-postayla göndermenizi sağlayan kod.

VBA kodu 1: Outlook imzasını koruma

.HTMLBody = "Email body" & "
" & .HTMLBody

VBA kodu 2: Geçerli Çalışma Sayfası'yi PDF ek olarak e-postayla gönderme

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. Genellikle "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basmanız yeterlidir.

2. "Microsoft Visual Basic for Applications" penceresinde **Ekle > Modül** seçeneğine tıklayın, ardından yukarıdaki VBA kodunu açılan **Modül (Kod)** penceresine yapıştırın.

3. Excel'den gönderilen e-postada Outlook'un varsayılan imzasını korumak için aşağıdaki gibi 2 VBA kodunu değiştirmeniz gerekir:

1) ".Body" satırını "VBA kodu 1" ile değiştirin;
2) ".Display" satırını "With OutlookMail (veya diğer kodlarda With xMailOut)" satırının altına taşıyın. Ekran görüntüsüne bakın:

.Body satırının değiştirildiği ve .Display komutunun With OutlookMail bloğunun altına yerleştirildiği değiştirilmiş VBA kodunun ekran görüntüsü

İşte değişikliklerin ardından tam kod.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody
    .Attachments.Add FileName
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

4. Kodu çalıştırmak için "F5" tuşuna basın. Ardından, Geçerli Çalışma Sayfası’nın PDF dosyaları olarak eklendiği ve Outlook varsayılan imzasının e-posta gövdesinin sonuna otomatik olarak yerleştirildiği yeni bir ileti penceresi açılacaktır.

Outlook'ta e-posta gövdesinin sonuna varsayılan imzanın otomatik olarak eklendiği bir e-postanın ekran görüntüsü


3. Excel'de belirli bir koşul sağlandığında VBA betikleriyle e-postaları otomatik olarak gönderme

Yukarıdaki örneklerde e-posta gönderimi için kodu manuel olarak çalıştırmalısınız. Ancak bir hücre belirli bir değere ulaştığında, bir hücrenin içeriği değiştiğinde veya belirli bir tarihe gelindiğinde gibi koşullar gerçekleştiğinde kodun otomatik olarak tetiklenmesini ve e-postanın kendiliğinden gönderilmesini istiyorsanız, bu bölüm Google’da Excel kullanıcılarının sıklıkla aradığı bu tür senaryoları sıralar ve belirli bir koşul sağlandığında Excel’den otomatik e-posta göndermenize yardımcı olur.

3,1 Bir hücre belirli bir değere ulaştığında otomatik olarak e-posta gönderme

Aşağıdaki ekran görüntüsünde gösterildiği gibi, D6 hücresinde toplam satışları içeren bir satış tablonuz olduğunu varsayalım. Toplam satışlar 10.000’i aştığında yöneticinize otomatik olarak e-posta gönderilsin; ancak toplam satışlar 10.000’e eşit veya daha düşük olduğunda ise hiçbir işlem yapılmamasını istiyorsunuz.

1. Satış tablosunu içeren çalışma sayfasının sekmesine sağ tıklayın ve açılan bağlam menüsünden "Kodu görüntüle" seçeneğini seçin.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu "Sayfa (Kod)" bölümüne yapıştırın.

VBA kodu: Excel'de bir hücre belirli bir değere ulaştığında otomatik olarak e-posta gönderme

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

Notlar:

1) "D6", e-posta göndermek için değerini temel alacağınız hücredir.
2) "> 10000" koşuldur ve D6 hücresindeki değer 10000'den büyük olduğunda bir e-posta gönderileceği anlamına gelir.
3) Aşağıdaki satırdaki "Range("D6")" ifadesi, e-posta gövdesinin D6 hücresindeki değere başvuracağı anlamına gelir.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
5) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
5) .Subject = "test" satırında E-posta Konusu değiştirin.
6) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti ' ekleyin.

Artık D6 hücresindeki değer 10.000'i aştığında, aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta otomatik olarak oluşturulacaktır.

Excel'de D6 hücresindeki değerin 10000’i aştığı durumda Outlook'ta oluşturulan bir e-postanın ekran görüntüsü


3,2 Bir hücre değeri değiştiğinde otomatik olarak e-posta gönderme

Aşağıdaki ekran görüntüsünde gösterildiği gibi, farklı çalışma sayfalarında aylık satışlar ve ayrı bir çalışma sayfasında toplam satışlar içeren bir çalışma kitabınız olduğunu varsayalım. Toplam satışları doğrulamanız ve bu değer değiştirildiğinde, çalışma kitabını gönderene geri gönderip ilgili hücrenin güncellendiğini bildirmeniz gerekiyor.

1. Satış tablosunu içeren çalışma sayfasının sekmesine sağ tıklayın ve açılan menüden “Kodu Görüntüle” seçeneğini seçin.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu Sayfa (Kod) bölümüne yapıştırın.

VBA kodu: Belirtilen bir hücre değeri değiştiğinde otomatik olarak e-posta gönderme

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Notlar: Kodda,

1) Koddaki "B14", B14 hücresinin değeri değiştiğinde bir e-posta gönderileceği anlamına gelir.
2) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
3) .Subject = "Worksheet modified" satırında E-posta Konusu değiştirin.
4) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
CC ve BCC alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
CC ve BCC alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti ' ekleyin.

Artık B14 hücresindeki değer değiştiğinde, aşağıdaki ekran görüntüsünde gösterildiği gibi otomatik olarak bir Outlook iletisi oluşturulur.

Excel'de B14 hücresindeki değer değiştiğinde Outlook'ta oluşturulan bir e-postanın ekran görüntüsü


3,3 Bir çalışma kitabı kaydedildiğinde otomatik olarak e-posta gönderme

Başkalarıyla paylaşılması gereken, üzerinde değişiklik yaptığınız bir çalışma kitabınız varsa, normalde çalışma kitabını kaydetmeniz, e-posta istemcinizi başlatmanız, bu çalışma kitabını ekleyerek yeni bir e-posta oluşturmanız, ilgili alanları doldurmanız ve ardından e-postayı göndermeniz gerekir. Bu bölümde, çalışma kitabını her kaydettiğinizde otomatik olarak bir e-posta oluşturmanın yöntemi açıklanmaktadır. Lütfen aşağıdaki adımları izleyin.

1. "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basın.

2. Bu pencerede, "Proje" bölmesinde "BuÇalışmaKitabı" öğesine çift tıklayın ve ardından aşağıdaki VBA kodunu "BuÇalışmaKitabı (Kod)" penceresine yapıştırın.

VBA kodu: Bir çalışma kitabı kaydedildiğinde otomatik olarak e-posta gönderme

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

Notlar: Kodda,

1) ".To = xxx@aaa.com" satırında lütfen "xxx@aaa.com" ifadesini gerçek alıcınızın E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekiyorsa lütfen noktalı virgülle ayırın.
2) ".Subject = "The workbook has been updated"" and ".Body = "Hi," & Chr(13) & Chr(13) & "Dosya şimdi güncellendi."" satırlarında E-posta Konusu ve gövdeyi ayrı ayrı değiştirin.
3) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti (apostrof) ' ekleyin.

3. Artık çalışma kitabınızı "Ctrl" + "S" tuşlarına basarak veya "Kaydet" düğmesine tıklayarak kaydettiğinizde, otomatik olarak bir Outlook e-postası oluşturulur. Geçerli Çalışma Kitabı'nın eke eklenmiş olduğunu ve ilgili alanların belirtilen içerikle doldurulduğunu görebilirsiniz. Ekran görüntüsüne bakın:

Geçerli çalışma kitabının eklendiği ve otomatik olarak gönderilmeye hazır olan bir Outlook e-postasının ekran görüntüsü

İpucu: Bu çalışma kitabını sık sık kullanıyorsanız, içerdikleri VBA betiğini gelecekte de kullanabilmek için dosyayı “Excel Makro Etkin Çalışma Kitabı” olarak kaydetmenizi öneririz. Adımlar aşağıda verilmiştir.

1) "Dosya" > "Farklı Kaydet" seçeneğine tıklayın ve ardından dosyayı kaydetmek için bir klasör seçin.
2) "Farklı Kaydet" iletişim kutusunda, "Dosya adı" metin kutusunda dosyayı ihtiyacınıza göre yeniden adlandırın, "Kaydetme Biçimini Belirt" Açılır Liste bölümünden "Excel Makro Etkin Çalışma Kitabı"nı seçin ve son olarak "Kaydet" düğmesine tıklayın. Ekran görüntüsüne bakın:

Çalışma kitabını Makro Etkin Excel Çalışma Kitabı olarak kaydetme seçeneğini gösteren Excel'deki 'Farklı Kaydet' iletişim kutusunun ekran görüntüsü


3,4 Belirli bir zamanda otomatik olarak e-posta gönderme

Her Cuma sabahı saat 9’da, birine görev atama çalışma kitabını içeren bir e-posta göndermeniz gerekiyorsa ve bunu e-posta istemcinizi manuel olarak çalıştırmadan Excel üzerinden otomatikleştirmek istiyorsanız, bu bölüm tam size göre!

1. "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basın.

2. «Microsoft Visual Basic for Applications» penceresinde «Ekle» > «Modül» seçeneğine tıklayarak yeni bir modül oluşturun ve ardından aşağıdaki VBA kodunu Modül penceresine yapıştırın.

VBA kodu1: Geçerli Çalışma Kitabı dosyasını Excel'den ek olarak e-postayla gönderme

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. Bu pencerede, «Proje» bölmesinde «ThisWorkbook» öğesine çift tıklayıp aşağıdaki VBA kodunu «ThisWorkbook (Kod)» penceresine yapıştırın.

E-posta gönderimini zamanlamak için 'Workbook_Open' olayı ve 'Application.OnTime' işlevini içeren VBA kod düzenleyicisinin ekran görüntüsü

VBA kodu 2: Belirli bir zamanda otomatik olarak e-posta gönderme

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Notlar:

1) VBA kodu 1 içindeki aşağıdaki satırda yer alan "Friday" ifadesi, e-postanın her Cuma günü otomatik olarak gönderileceği anlamına gelir;
If Weekday(Date) = vbFriday Then
2) VBA kodu 1 ve VBA kodu 2 içindeki "09:00:00" saati, e-postanın belirli bir günün sabah 9’unda gönderileceği anlamına gelir.
Günü ve saati ihtiyacınıza göre değiştirebilirsiniz.
3) Kod çalıştığında bir e-posta oluşturulur. İleti penceresinin açılmasını istemiyorsanız ve doğrudan gönderim yapmak istiyorsanız, lütfen VBA kodu 1 içindeki ".Display" satırını kaldırın ve '.Send' satırının başındaki "kesme işaretini (apostrof)" kaldırın.

4. Kodları kaydedin ve ardından çalışma kitabını aşağıdaki gibi, makro destekleyen bir Excel dosyası olarak kaydedin.

4,1) "Dosya" > "Farklı Kaydet" seçeneğine tıklayın ve ardından dosyayı kaydetmek için bir klasör seçin.
4,2) "Farklı Kaydet" iletişim kutusunda, "Dosya adı" metin kutusunda dosyayı ihtiyacınıza göre yeniden adlandırın, "Kaydetme Biçimini Belirt" Açılır Liste bölümünden "Excel Makro Etkin Çalışma Kitabı"nı seçin ve son olarak "Kaydet" düğmesine tıklayın. Ekran görüntüsüne bakın:

Çalışma kitabını Makro Etkin Excel Çalışma Kitabı olarak kaydetme seçeneğini gösteren Excel'deki 'Farklı Kaydet' iletişim kutusunun ekran görüntüsü

5. Kaydettiğiniz makro destekleyen çalışma kitabını açın; belirlenen gün ve saat geldiğinde otomatik olarak bir e-posta oluşturulacak veya gönderilecektir.


4. Ek konular

Bu bölüm, Excel'den e-posta gönderirken karşılaşabileceğiniz diğer konuları bir araya getirir.

4,1 Excel'den hücre aralığını e-postayla gönderme (VBA betiğiyle)

Aşağıdaki ekran görüntüsünde gösterildiği gibi, bir Excel çalışma sayfasında aylık satış tablonuz olduğunu ve bu tabloyu başkalarına e-postanın gövdesinde veya doğrudan ek olarak göndermeniz gerektiğini düşünelim. İşte bunu gerçekleştirmeniz için iki yöntem sunuyoruz.

4,1.1 Excel'den bir aralığı e-posta gövdesinin bir parçası olarak gönderme

Excel'den e-posta gövdesinin bir parçası olarak bir hücre aralığını göndermek için aşağıdaki VBA kodunu çalıştırabilirsiniz.

1. "Microsoft Visual Basic for Applications" penceresini açmak için "Alt" + "F11" tuşlarına basın.

2. «Microsoft Visual Basic for Applications» penceresinde «Araçlar» > «Başvurular» seçeneğine tıklayın. Ardından açılan «References – VBAProject» iletişim kutusunda «Microsoft Outlook 16,0 Object Library» seçeneğinin onay kutusunu işaretleyip «Tamam» düğmesine tıklayın.

3. «Ekle» > «Modül» seçeneğine tıklayın ve ardından aşağıdaki VBA kodunu «Modül (Kod)» penceresine yapıştırın.

VBA kodu: Excel'den e-posta gövdesinin bir parçası olarak hücre aralığını gönderme

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

Notlar: Kodda,

1) ".To = xxx@aaa.com" satırında, lütfen "xxx@aaa.com" kısmını gerçek alıcının E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekirse, bunları noktalı virgülle ayırın.
2) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti (apostrof) ' ekleyin.

4. Kodu çalıştırmak için «F5» tuşuna basın. Açılan «Kutools for Excel» iletişim kutusunda, e-posta gövdesinin bir parçası olarak göndermek istediğiniz hücre aralığını seçin ve «Tamam» düğmesine tıklayın. Ekran görüntüsüne bakın:

Kutools for Excel iletişim kutusunun, e-posta gövdesinin bir parçası olarak göndermek üzere hücre aralığının seçildiği ekran görüntüsü

Daha sonra bir Outlook e-postası otomatik olarak oluşturulur ve çalışma sayfasında seçtiğiniz aralığın e-posta gövdesine eklendiğini görürsünüz. Ekran görüntüsüne göz atın:

Excel'den seçilen aralığın e-posta gövdesine yerleştirildiği bir Outlook e-postasının ekran görüntüsü


4,1.2 Excel'den bir aralığı ek olarak e-postayla gönderme

Excel'den bir çalışma sayfasındaki hücre aralığını ek olarak e-postayla göndermeniz gerekiyorsa, aşağıdaki VBA kodunu deneyebilirsiniz.

1. "Alt" + "F11" tuşlarına basın.

2. Açılan «Microsoft Visual Basic for Applications» penceresinde «Ekle» > «Modül» seçeneğine tıklayın ve ardından aşağıdaki VBA kodunu «Modül (Kod)» penceresine yapıştırın.

VBA kodu: Excel'den bir aralığı ek olarak e-postayla gönderme

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Notlar:

1) ".To = xxx@aaa.com" satırında, lütfen "xxx@aaa.com" kısmını gerçek alıcının E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekirse, bunları noktalı virgülle ayırın.
2) " .Subject = "Aylık satışlar: 2021"" ve ".Body = "Merhaba, lütfen bu belgeyi inceleyin ve okuyun."" satırlarında E-posta Konusu ve e-posta gövdesini ayrı ayrı değiştirin;
3) Aşağıdaki iki satırda:
.CC = "email address"
.BCC = "email address"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti (apostrof) ' ekleyin.

3. Kodu çalıştırmak için «F5» tuşuna basın. Açılan «Kutools for Excel» iletişim kutusunda, e-postaya ek olarak göndermek istediğiniz hücre aralığını seçin ve «Tamam» düğmesine tıklayın. Ekran görüntüsüne bakın:

Kutools for Excel iletişim kutusunun, bir e-postada ek olarak göndermek üzere hücre aralığının seçildiği ekran görüntüsü

Daha sonra bir Outlook e-postası otomatik olarak oluşturulur. Çalışma sayfasında seçtiğiniz hücre aralığı, Excel çalışma kitabı olarak kaydedilir ve İleti penceresine eklenir. Ekran görüntüsüne bakın:

Excel'den seçilen aralığın ek olarak kaydedildiği bir Outlook e-postasının ekran görüntüsü


4,2 Excel'de bir düğmeye tıklandığında e-posta gönderme

Excel'de bir e-posta göndermek için bir komut düğmesine tıklamanız ve böylece bir makroyu tetiklemeniz gerekiyorsa—örneğin, çalışma sayfasındaki bir komut düğmesine tıklayarak Geçerli Çalışma Kitabı dosyasını başkalarına ek olarak göndermek istiyorsanız—aşağıdaki adımları izleyerek bunu kolayca gerçekleştirebilirsiniz.

1. «Geliştirici» > «Ekle» > «Komut Düğmesi (ActiveX Denetimi)» seçeneğine tıklayıp çalışma sayfasına bir komut düğmesi çizin.

İpucu: Zaten bir komut düğmeniz varsa, bu adımı atlayabilirsiniz.

2. «Microsoft Visual Basic for Applications» penceresini açmak için «Alt» + «F11» tuşlarına basın. Pencerede «Ekle» > «Modül» seçeneğine tıklayıp, Excel’deki Geçerli Çalışma Kitabı dosyasını ek olarak e-postayla göndermek için kullanılan VBA kodunu Modül (Kod) penceresine yapıştırın.

Kodu almak için buraya tıklayın.

Not: 2 numaralı adımda oluşturduğunuz makronun adı «SendWorkbook»tur.

3. «Microsoft Visual Basic for Applications» penceresini kapatmak için «Alt» + «Q» tuşlarına basın.

4. Şimdi makroyu komut düğmesine atamanız gerekiyor. Komut düğmesine sağ tıklayıp bağlam menüsünden «Kodu Görüntüle» seçeneğini seçin.

5. Ardından «Microsoft Visual Basic for Applications» penceresi açılır; «Sayfa (Kod)» penceresinde aşağıdaki iki satırın listelendiğini görürsünüz.

Private Sub CommandButton1_Click()
End Sub

CommandButton1_Click kodunu gösteren Microsoft Visual Basic for Applications penceresinin ekran görüntüsü

6. Komut düğmesi için alt yordamın içine mevcut makronun adını yazın.

Komut düğmesine mevcut bir makroyu atamak için VBA kodunun düzenlendiği ekran görüntüsü

7. «Visual Basic Editor» penceresini kapatmak için «Alt» + «Q» tuşlarına basın, ardından tasarım modundan çıkmak için «Geliştirici» > «Tasarım Modu» seçeneğine tıklayın.

Geliştirici sekmesinde Tasarım Modu'nun kapatıldığı ekran görüntüsü

Artık geçerli çalışma kitabını e-postanın bir eki olarak göndermek için komut düğmesine tıklayabilirsiniz.


4,3 Belirtilen bir e-posta hesabından e-posta gönderme

Normalde Excel’den VBA koduyla e-posta gönderdiğinizde, gönderen olarak Outlook’taki Varsayılan hesap kullanılır. Ancak Outlook’ta birden fazla e-posta hesabınız varsa ve Varsayılan hesabı değil, belirli bir hesabı kullanarak Excel’den e-posta göndermek istiyorsanız aşağıdaki VBA kodu size yardımcı olabilir.

Bu durumda aşağıdaki kodlara ihtiyaç duyulur.

VBA kodu 1:

Dim OutlookMail As Outlook.MailItem

VBA kodu 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Yukarıdaki VBA kodlarını nasıl kullanırsınız?

1) Kendi kodunuzda, "Dim OutlookMail As Object" gibi bir satırı VBA kodu 1 ile değiştirmeniz gerekir;
2) Kodunuzda "On Error Resume Next" satırının altına aşağıdaki VBA kodu 2’yi ekleyin. Ardından VBA kodu 2 içinde e-posta göndermek için kullanacağınız E-posta Adresi’i belirtin.

Bu örnekte, Excel'den Geçerli Çalışma Kitabı dosyasını ek olarak göndermek için belirli bir e-posta hesabını kullanacağız. Lütfen aşağıdaki adımları izleyin.

1. «Alt» + «F11» tuşlarına basın. «Microsoft Visual Basic for Applications» penceresinde «Araçlar» > «Başvurular» seçeneğine tıklayın. Ardından açılan «References – VBAProject» iletişim kutusunda «Microsoft Outlook 16,0 Object Library» seçeneğini işaretleyip «Tamam» düğmesine tıklayın.

Excel'de 'Başvurular – VBAProject' iletişim kutusunun, Microsoft Outlook 16.0 Nesne Kitaplığı seçeneğinin işaretli olduğu ekran görüntüsü

2. «Ekle» > «Modül» seçeneğine tıklayın, ardından aşağıdaki VBA kodunu «Modül (Kod)» penceresine yapıştırın.

VBA kodu: Excel'den belirtilen bir Outlook hesabı üzerinden Geçerli Çalışma Kitabı dosyasını e-posta eki olarak gönderme

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. Kodu çalıştırmak için «F5» tuşuna basın. Ardından bir Outlook e-posta iletisi açılır ve «Kimden» alanının, kodda belirttiğiniz e-posta hesabıyla otomatik olarak doldurulduğunu görürsünüz.


4,4 Belirli bir tarihe ulaşıldığında e-posta gönderme

Belirli bir Bitiş Tarihi’ne göre e-posta göndermeniz gerekiyorsa—örneğin, aşağıdaki ekran görüntüsünde gösterildiği gibi bir proje tablonuz varsa ve «E2:E7 aralığındaki Bitiş Tarihi, bugün itibarıyla (2022/8/4 varsayılarak) 7 güne eşit ya da daha az kalacak şekilde yaklaştığında» ilgili proje liderlerine otomatik olarak e-posta gönderilerek projenin süresinin dolmak üzere olduğu bildirilir.

1. Proje tablosunu içeren çalışma sayfasının sekmesine sağ tıklayın ve açılan bağlam menüsünden «Kodu Görüntüle» seçeneğini seçin.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu "Sayfa (Kod)" bölümüne yapıştırın.

VBA kodu: Bitiş Tarihi koşulu karşılandığında otomatik olarak e-posta gönderme

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
            xMailBody = ""
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub

Notlar: Kodda,

1) Aşağıdaki satırlarda, "E2:E7" aralığı e-postaları oluşturmak için dayanacağınız Bitiş Tarihi içerir. "C2:C7" aralığı e-postaları göndereceğiniz E-posta Adresi içerir. "D2:D7" aralığı ise alıcılara projenin süresinin dolmak üzere olduğunu bildirmek için e-posta gövdesine ekleyeceğiniz açıklamaları içerir. Aralıkları ihtiyacınıza göre değiştirebilirsiniz.
Set xRgDate = Range("E2:E7")
Set xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) Aşağıdaki satır, Bitiş Tarihi’nin bugün itibarıyla 1 günden fazla ve 7 günden az veya eşit olması gerektiğini belirtir. Bunu ihtiyacınıza göre değiştirebilirsiniz.
If CDate(xRgDateVal) - Date 0 Then
3) ".To = xxx@aaa.com" satırında, lütfen "xxx@aaa.com" kısmını gerçek alıcının E-posta Adresi ile değiştirin. Birden fazla E-posta Adresi gerekirse, bunları noktalı virgülle ayırın.
4) ".Subject = "Çalışma sayfası değiştirildi"" satırındaki E-posta Konusu’yi değiştirin.
5) Aşağıdaki iki satırda:
.CC = "Email Address"
.BCC = "Email Address"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan E-posta Adresi ile değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir kesme işareti (apostrof) ' ekleyin.

3. Kodu çalıştırmak için «F5» tuşuna basın. Son tarih koşulları karşılandığında, ilgili e-posta otomatik olarak oluşturulacaktır. Bu örnekte, aşağıdaki ekran görüntüsünde gösterildiği gibi iki e-posta oluşturulur.

Excel'de son kullanma tarihi eşleşme koşullarına göre otomatik olarak oluşturulan iki e-postanın ekran görüntüsü


5. Excel'den kolayca e-posta göndermenizi sağlayan kullanışlı bir araç

VBA konusunda yeniyseniz, yukarıdaki yöntemler sizin için kolay olmayabilir. Bu nedenle E-posta Gönder özelliğine sahip «Kutools for Excel» eklentisini öneriyoruz. Bu özellik sayesinde Excel’den yalnızca birkaç tıklamayla e-posta göndermek çok daha kolay hale gelir. Lütfen aşağıdaki adımları izleyin.

Kutools for Excelkarmaşık görevleri kolaylaştırmak, yaratıcılığı ve verimliliği artırmak için 300'den fazla gelişmiş özelliğe sahiptir.Yapay zeka yetenekleriyle entegre, Kutools görevleri hassasiyetle otomatikleştirerek veri yönetimini zahmetsiz hale getirir.Kutools for Excel hakkında detaylı bilgi…         Ücretsiz deneme…
5,1 Gerekli e-posta alanlarını içeren bir E-posta Listesi kolayca oluşturun

E-posta Gönder özelliğini kullanmadan önce, gerekli e-posta alanlarını içeren bir E-posta Listesi oluşturmanız gerekir. İşte tam da bu noktada Posta Listesi Oluştur özelliği devreye girer ve size kolaylık sağlar.

1. «KUTOOLS PLUS» > «Posta Listesi Oluştur» seçeneğine tıklayın.

2. Açılan «Posta Listesi Oluştur» penceresinde aşağıdaki şekilde yapılandırmanız gerekir.

2,1) "Posta listesine dahil edilecek sütunları seçin" bölümünde, e-postanızda ihtiyacınız olan alanları işaretleyin;
2,2) "Ek" bölümünde, ihtiyacınız olabilecek bir veya daha fazla ek dosyayı işaretleyin;
2,3) E-posta Listesi’yi yerleştirmek için bir konum belirtin;
2,4) "Oluştur" düğmesine tıklayın. Ekran görüntüsüne bakın:

Ardından, aşağıdaki ekran görüntüsünde gösterildiği gibi örnek bir E-posta Listesi tablosu oluşturulur.

3. Artık örnekteki orijinal verileri kendi alan verilerinizle değiştirmenin tam zamanı.

Artık bir E-posta Listesi tablosu oluşturdunuz. İleriye dönük olarak, oluşturduğunuz alanlara dayanarak Excel'den e-posta göndermek için «E-posta Gönder» özelliğini kullanın.

Kutools for Excel– Excel'i, işinizi daha hızlı ve kolay hale getiren 300 temel araçla güçlendirin ve daha akıllı veri işleme ile üretkenlik için yapay zeka özelliklerinden yararlanın.Hemen Edinin


5,2 E-posta Listesi içinde oluşturduğunuz alanları içeren e-postaları kolayca gönderin

Gerekli e-posta alanlarını içeren E-posta Listesi'ni oluşturduktan sonra ()nasıl yapılacağını öğrenmek için tıklayın), artık bu alanları kullanarak Excel'den e-posta gönderebilirsiniz.

1. Tüm E-posta Listesi'ni seçin ve "KUTOOLS PLUS" > "E-posta Gönder" seçeneğine tıklayın.

2. "E-posta Gönder" iletişim kutusunda lütfen aşağıdaki ayarları yapın.

2,1) Alanlar, E-posta Listesi içinde belirttiğiniz alanlara göre iletişim kutusundaki ilgili her alana otomatik olarak doldurulur;
İpucu: Şu anda belirli bir alana ihtiyacınız yoksa, Açılır Liste içinde boş bir seçenek belirleyin.
2,2)"Yer Tutucu Ekle" (isteğe bağlı): E-posta gövdesine değişken bilgi eklemeniz gerekiyorsa.
Örneğin, her birine kişiselleştirilmiş isimlerle çok sayıda alıcıya e-posta göndermeniz gerekebilir; bu durumda, yer tutucuyu eklemek istediğiniz e-posta gövdesindeki imleci yerleştirin, "E: Ad" alanını (veya e-posta listesindeki diğer isim alanını) seçin ve ardından "Yer Tutucu Ekle" düğmesine tıklayın;
Alıcılar e-postayı aldığında, e-posta gövdesi aynı kalır ancak her birinin adı benzersiz olur.
2,3) E-posta gövdesini ihtiyaç duyduğunuz şekilde düzenleyin;
2,4) "Outlook kullanarak gönder" kutusunun işaretli olduğundan emin olun;
2,5) "Gönder" düğmesine tıklayın. Ekran görüntüsüne bakın:

3. Ardından, gönderilen e-posta sayısını gösteren bir "Kutools for Excel" iletişim kutusu açılır; bu kutuyu kapatmak için "Tamam" düğmesine tıklayın.

İpucu: Gönderdiğiniz e-postaları incelemek için Outlook’ta “Gönderilen Öğeler” klasörüne göz atabilirsiniz.


5,3 HTML gövdeli (köprü, resim vb. içeren) e-postaları kolayca gönderin

Bu E-posta Gönder özelliği, köprü, resim, farklı yazı boyutları ve yazı tipi renkleri gibi öğeler içeren bir HTML e-postası oluşturmanıza olanak tanır.

Gerekli e-posta alanlarını içeren bir E-posta Listesi oluşturduktan sonra ()ve) araç çubuğundaki seçenekleri kullanarak E-posta Gönder iletişim kutusunu yapılandırırken gövde içeriğini zenginleştirebilirsiniz.

Aşağıdaki ekran görüntüsüne bakın:


5,4 E-posta gönderirken Outlook varsayılan imzasını kolayca ekleyin

Yukarıdaki yöntemde, Outlook’un varsayılan imzasıyla e-posta göndermenize yardımcı olmak için bir VBA kodu sunduk. Buradaysa tek yapmanız gereken, E-posta Gönder özelliğini kullanırken ilgili seçeneği işaretlemek; böylece Excel’den gönderdiğiniz e-postalara Outlook’un varsayılan imzası otomatik olarak eklenir.

Bir e-posta listesi oluşturduktan ve gerekli e-posta alanlarını ekledikten sonra, E-posta Gönder iletişim kutusunu yapılandırırken **Seçenekler > Outlook’un imza ayarlarını kullan** seçeneğini işaretlemeniz gerekir.

Not: Outlook’un imza ayarlarını kullan seçeneğinin işaretli olduğundan emin olun.

Alıcılar e-postayı aldığında, e-posta gövdesinin sonunda Outlook’un varsayılan imzasını görürler.


5,5 Belirli bir e-posta hesabından e-posta gönderin

Excel'den e-posta gönderirken varsayılan hesap yerine belirli bir e-posta hesabını kullanmak istiyorsanız, E-posta Gönder özelliği bunu kolayca sağlar.

Bir e-posta listesi oluşturduktan sonra E-posta Gönder iletişim kutusunu yapılandırırken, **Seçenekler > Gönderen** seçeneğine tıklayıp e-postaları göndermek istediğiniz e-posta hesabını seçin.

Not: E-posta hesabınızı seçtikten sonra, hesabın önünde bir onay işareti belirir.

Bu E-posta Gönder özelliğini daha yakından tanımak için buraya tıklayın.

Kutools for Excel– Excel'i, işinizi daha hızlı ve kolay hale getiren 300 temel araçla güçlendirin ve daha akıllı veri işleme ile üretkenlik için yapay zeka özelliklerinden yararlanın.Hemen Edinin

Sonuç olarak, Excel’den e-posta göndermek günlük işlerinizde oldukça faydalıdır. Bu makale, Excel’den e-posta gönderme konusundaki daha kapsamlı başlıkları ele almaktadır; başka konular veya daha kolay çözümler biliyorsanız, lütfen yorum bırakarak paylaşın!

En İyi Office Verimlilik Araçları

🤖KUTOOLS AI Yardımcısı: Şunu temel alarak Veri Analizi’i devrimleştirin:Akıllı Yürütme   |  Kod Oluştur|  özel formüller Oluştur  |  Verileri Analiz Et ve Grafikler Oluştur|  Geliştirilmiş İşlevler Çağır…
Popüler Özellikler:Bul, Vurgula veya Yinelenenleri İşaretle   |  Boş Satırları Sil   |  Veri Kaybetmeden Sütunları Birleştir veya Hücreleri   |   Formül kullanmadan yuvarlama…
Süper ARA:Çoklu Kriterli Düşeyara (VLookup)  |  Çoklu Değerli Düşeyara (VLookup)  |   Birden Fazla Sayfada Düşeyara (VLookup)   |   Bulanık Eşleme…
Gelişmiş Açılır Liste:Açılır Liste Hızlıca Oluştur   |  Bağımlı Açılır Liste   |  Çoklu Seçimli Açılır Liste…
Sütun Yöneticisi:Belirli Sayıda Sütun Ekle|Sütunları Taşı|Gizli Sütunların Görünürlük Durumunu Aç/Kapat|Aralıkları ve Sütunları Karşılaştır…
Öne Çıkan Özellikler:Izgara Odaklama   |  Tasarım Görünümü   |Gelişmiş formül çubuğu   | Çalışma Kitabı ve Sayfa Yöneticisi   |  Kaynaklar(Otomatik Metin)|  Tarih Seçici   |  Çalışma Sayfalarını Birleştir  |  Şifrele/Hücreleri Şifre Çöz   | Listeye Göre E-posta Gönder   |  Süper Filtre   |   Özel Filtre(Kalın Yazılı Hücreleri Filtrele/italik/üstü çizili…) …
En İyi 15 Araç Setleri:12 MetinAraçları(Metin Ekle,Belirli Karakterleri Sil, …)|   50+GrafikTürleri(Gantt Grafiği, …)|   40+ Pratik Formüller(Doğum tarihine dayanarak yaş hesapla, …)|   19 EklemeAraçları(QR Kodu Ekle,Yoldan Resim Ekle, …)|   12 DönüştürmeAraçları(Kelimeye Dönüştür,Döviz Kuru Dönüşümü, …)|   7 Birleştir ve AyırAraçları(Gelişmiş Satırları Birleştir,Hücreleri Böl, …)|… ve daha fazlası
Kutools'u tercih ettiğiniz dilde kullanın – İngilizce, İspanyolca, Almanca, Fransızca, Çince ve 40+ diğer dil desteği mevcuttur!

Kutools for Excel ile Excel becerilerinizi üst seviyeye taşıyın ve hiç yaşamadığınız bir verimlilik deneyimi yaşayın.Kutools for Excel, verimliliği artırmak ve Zamanı Kaydet için 300’den fazla gelişmiş özelliğe sahiptir.İhtiyacınız olan özelliği hemen edinmek için buraya tıklayın…


Office Tab, Office uygulamalarına sekmeli arayüz getirir ve işlerinizi çok daha kolay hale getirir

  • Word, Excel, PowerPoint, Publisher, Access, Visio ve Project'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
  • Birden fazla belgeyi yeni pencerelerde değil, aynı pencerenin yeni sekmelerinde açın ve oluşturun.
  • Günlük verimliliğinizi %50 artırır ve her gün yüzlerce fare tıklamasından tasarruf etmenizi sağlar!

Tüm Kutools eklentileri tek bir kurulum dosyasında!

Kutools for Office paketi, Excel, Word, Outlook ve PowerPoint için eklentilerle birlikte Office Tab Pro’yu da içerir; Office uygulamalarında çalışan ekipler için idealdir.

ExcelWordOutlookTabsPowerPoint
  • Hepsi bir arada paket— Excel, Word, Outlook ve PowerPoint eklentileri + Office Tab Pro
  • Tek kurulum, tek lisans— birkaç dakikada hazır (MSI uyumlu)
  • Birlikte daha iyi çalışır— Office uygulamaları arasında akıcı verimlilik
  • 30 günlük tam özellikli deneme— kayıt gerekmez, kredi kartı gerekmez
  • En iyi değer— tek tek eklenti satın almaya göre tasarruf sağlar