Skip to main content

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

Author: Siluvia Last Modified: 2025-06-10

Genellikle, e-posta göndermek için Outlook, Gmail gibi e-posta istemcilerini kullanırız. Ancak, birçok kişi verilerini Excel çalışma kitaplarında saklar ve bu verilerle çalışırken bazı bilgileri başkalarına göndermeleri gerekir. Bu nedenle, doğrudan Excel çalışma kitabından e-posta göndermek, e-posta istemcisiyle uğraşma süresini kısaltır. Bu adım adım eğitim, farklı koşullarda Excel'den nasıl e-posta göndereceğinizi gösterecek.

Not: Aşağıdaki yöntemleri uygulamadan önce, bilgisayarınızda bir Outlook e-posta istemcisi yapılandırmalı ve varsayılan e-posta istemcisi olarak ayarlamalısınız.

İçindekiler: [ Gizle ]

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

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

Bu bölümde, Excel'den e-posta göndermenin temel bilgileri tanıtılmaktadır.

1.1 Excel'in yerleşik fonksiyonlarıyla Excel'den e-posta gönderme

Eğer yalnızca Excel'den basit e-postalar göndermek istiyorsanız ve yalnızca Alıcı, Konu, Cc ve gövde alanlarını kullanacaksanız, Excel'in yerleşik fonksiyonları size yardımcı olabilir.


1.1.1 Excel'den formül kullanarak e-posta gönderme

Aşağıdaki tabloda gösterildiği gibi, verilen alanlara göre Excel'den farklı e-postalar göndermek için, bu alanların hücre referanslarını kullanarak farklı Hyperlink formülleri oluşturabilirsiniz. E-posta köprülerini oluşturduktan sonra, göndermek istediğiniz e-posta için ilgili köprüye tıklamanız yeterlidir.

Not: Eğer Alıcı veya Cc alanında birden fazla kişi varsa, bunları noktalı virgül ile ayırmalısınız.

Bu bölümde, Hyperlink formülüne e-posta adresi, Cc alıcısı, konu satırı ve gövde metni ekleme adımları dört başlık altında anlatılmıştır. Lütfen aşağıdaki adımları uygulayın.

"HYPERLINK" fonksiyonunun söz dizimi ve parametreleri aşağıdaki gibidir.

Söz Dizimi

HYPERLINK(link_location, [friendly_name])

Parametreler

"Link_location" (zorunlu): Açılacak belgenin yolu ve dosya adı;
İpucu: Bu eğitimde, e-posta için gereken tüm alanlar (alıcı e-posta adresi, Cc alıcısı, konu satırı ve gövde metni) ilk parametre olan "link_location" içinde yer almalıdır.
"Friendly_name" (isteğe bağlı): Hücrede görüntülenecek atlama değeri.

1.1.1.1 Hyperlink formülüne e-posta adresi ekleme

Burada, formülün bir parçası olarak "mailto:" kullanılarak bir e-posta alıcısı eklenir. Bu örnekte, ilk alıcının e-posta adresi B2 hücresindedir, bu nedenle "mailto:" ifadesini ekleyip B2 hücresine referans vermelisiniz.

“mailto:”&B2

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

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 olduğu gibi bir köprü oluşturulur. Bağlantıya tıkladığınızda, bir Outlook e-postası oluşturulur ve alıcının e-posta adresi otomatik olarak Alıcı alanına eklenir.

Alıcının e-posta adresi artık Hyperlink formülüne eklendi. Şimdi ihtiyacınıza göre konu satırı, Cc alıcısı ve gövde metni eklemek için aşağıdaki adımlara devam edin.


1.1.1.2 Hyperlink formülüne Cc alıcısı ekleme

Hyperlink fonksiyonuna Cc alıcısı eklemek için, formüle aşağıdaki gibi "?cc=" ifadesini ekleyin.

"?cc=" & C2
Burada C2, cc alıcısının e-posta adresini içerir.

F2 hücresindeki formül aşağıdaki gibi olmalıdır:

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


1.1.1.3 Hyperlink formülüne konu satırı ekleme

Konu satırını Hyperlink fonksiyonuna eklemek için, formüle aşağıdaki gibi "&subject=" ifadesini ekleyin.

"&subject="& D2
Burada D2, e-posta konusunu 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 Hyperlink formülüne satır sonlu gövde metni ekleme

Son adım olarak, Hyperlink formülüne gövde metni eklenir. Örnekte, E2 hücresindeki iki satır metin satır sonu ile ayrılmıştır ve e-posta gövdesinde bu satır sonunun korunmasını istersiniz. Outlook bu durumda satır sonunu tanır mı? Kontrol edelim.

Gövde metnini Hyperlink formülüne eklemek için, formüle aşağıdaki gibi “&body=" ifadesini eklemeniz gerekir.

"&body="& E2
Burada E2, e-posta gövde metnini içerir.

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

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

Not: "Enter" tuşuna basıp bağlantıya tıkladığınızda, yeni e-postada gövde içeriğinin aynı satırda görüntülendiğini görebilirsiniz.

E-posta gövdesinin ayrı satırlarda görüntülenmesi için, hücre içeriğini düzenleyip satır sonu eklemek istediğiniz yere "%0A" karakter kodunu eklemeniz 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 Link_location parametresini tamamladık. Bu bölümde ise, bir sonraki parametre olan [friendly_name] kısmını tamamlayacağız.

Bu örnekte, köprü hücresinde “Email to xx” şeklinde bir metin görüntülenmesini istiyorum; burada xx, A2 hücresindeki alıcının adıdır. Bu nedenle F2 hücresindeki formül şu şekilde değiştirilmelidir:

=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 "Otomatik Doldurma Kolu"nu aşağı sürükleyerek diğer e-posta köprülerini oluşturun. Ekran görüntüsüne bakın:


1.1.2 Hyperlink fonksiyonu ile Excel'den e-posta gönderme

Yukarıdaki Hyperlink formülünü kullanmanın dışında, Excel'de "Bağlantı Ekle" fonksiyonu ile manuel olarak e-posta köprüsü de oluşturabilirsiniz. Bu bölümde adımlar gösterilecektir.

1. Bağlantı eklemek istediğiniz e-posta hücresine sağ tıklayın, açılan menüden "Bağlantı"yı seçin.

2. Açılan "Bağlantı Ekle" iletişim kutusunda aşağıdaki ayarları yapmanız gerekir.

2.1) Sol panelden "E-posta Adresi"ni seçin.
2.2) "Görüntülenecek metin" kutusuna, hücrede görüntülenmesini istediğiniz metni yazın;
İpucu: Bu iletişim kutusunda hücre referansı kullanamazsınız, bu nedenle e-posta alanlarını aşağıdaki gibi manuel olarak yazmalısınız.
2.3) "E-posta adresi" kutusuna, aşağıdaki e-posta adreslerini yazmanız gerekir.
mailto:e-posta adresi
“e-posta adresi” metnini kendi gerçek e-posta adresinizle değiştirin. Birden fazla e-posta adresiniz varsa, bunları noktalı virgül ile ayırın.
2.4) "Konu" kutusunda, e-posta konusunu ve gövdesini burada belirtebilirsiniz. Lütfen aşağıdaki gibi yapılandırın:
E-posta konusu&body=E-posta gövdesi
Bu örnekte, "Monthly sale&body=Hi,%0AEmail received" yazıyorum.
Burada konu: Monthly sale;
ve
e-posta gövdesi:
Merhaba,
E-posta alındı. ("%0A" Outlook tarafından tanınan satır sonu karakter kodudur)
2.5) "Tamam" butonuna tıklayarak köprüyü kaydedin. Ekran görüntüsüne bakın:

Köprüye tıkladığınızda, belirttiğiniz Alıcı, Konu ve Gövde alanlarıyla bir Outlook e-postası oluşturulacaktır. Ekran görüntüsüne bakın:

Notlar:

1) Bu yöntemle, her bir e-posta köprüsünü manuel olarak oluşturmanız gerekir.
2) Bu yöntemle e-postalara Cc alanı ekleyemezsiniz. Eğer Cc alanına ihtiyacınız varsa, yeni açılan e-posta penceresinden ekleyin.

1.2 VBA betiğiyle hücrelerdeki birden fazla alıcıya e-posta gönderme

Yukarıdaki örnekte, bir hücrede noktalı virgülle ayrılmış birden fazla e-posta adresi olduğunu görebilirsiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta adresleri listeniz varsa ve bunların hepsine toplu veya ayrı ayrı e-posta göndermek istiyorsanız, aşağıdaki VBA kodu işinizi kolaylaştıracaktır.


1.2.1 VBA betiğiyle hücrelerdeki birden fazla alıcıya e-posta gönderme

1. E-posta göndermek istediğiniz tüm e-posta adreslerinin bulunduğu çalışma sayfasında, "Alt" + "F11" tuşlarına basarak "Microsoft Visual Basic for Applications" penceresini açın.

2. "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül"e tıklayın ve ardından aşağıdaki kodu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Bir e-posta adresleri 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. "F5" tuşuna basarak kodu çalıştırın, ardından bir "Kutools for Excel" iletişim kutusu açılır. E-posta adresleri listesini seçin ve "Tamam"a tıklayın.

A screenshot of the 'Kutools for Excel' dialog box asking for the email addresses list

Notlar:

1) Yukarıdaki iletişim kutusunun açılmasını istemiyorsanız ve e-posta adresleri aralığını doğrudan kodda belirtmek istiyorsanız, şu satırı değiştirin:
Set xRg = Application.InputBox("Lütfen adresler listesini seçin:", "Kutools for Excel", xTxt, , , , ,8)
şu satır ile değiştirin
Set xRg = Range("A2:A7")
2) Kendi e-posta konunuzu ve gövdenizi aşağıdaki satırlarda belirtebilirsiniz:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) E-postayı yeni mesaj penceresi açılmadan doğrudan göndermek için, şu satırı değiştirin:
.Display
şu satır ile değiştirin
.Send

Kodu çalıştırdıktan sonra, seçilen aralıktaki tüm e-posta adresleri mesaj penceresinin Alıcı alanında görüntülenecektir. Ekran görüntüsüne bakın:

A screenshot of the email message window with all email addresses filled in the To field


1.2.2 VBA betiğiyle hücrelerde listelenen her alıcıya ayrı ayrı e-posta gönderme

Yukarıdaki kod, seçilen aralıktaki tüm e-posta adreslerini mesaj penceresinin Alıcı alanına ekler. Eğer listedeki her e-posta adresine ayrı ayrı e-posta göndermek ve alıcıların birbirlerinin adreslerini görmemesini istiyorsanız, aşağıdaki VBA betiğini deneyebilirsiniz.

1. E-posta göndermek istediğiniz tüm e-posta adreslerinin bulunduğu çalışma sayfasında, "Alt" + "F11" tuşlarına basarak "Microsoft Visual Basic for Applications" penceresini açın.

2. "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül"e tıklayın ve ardından aşağıdaki kodu Modül (Kod) penceresine yapıştırın.

VBA kodu: Hücrelerde listelenen her e-posta 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"a tıklayın. "Başvurular – VBAProject" iletişim kutusunda "Microsoft Outlook16.0 Object Library" kutusunu bulun ve işaretleyin, ardından değişiklikleri kaydetmek için "Tamam" butonuna tıklayın.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. "F5" tuşuna basarak kodu çalıştırın, ardından bir "Kutools for Excel" iletişim kutusu açılır. E-posta adresleri listesini seçin ve "Tamam"a tıklayın.

A screenshot of the 'Kutools for Excel' dialog box asking for the email address list selection

Notlar:

1) Yukarıdaki iletişim kutusunun açılmasını istemiyorsanız ve e-posta adresleri aralığını doğrudan kodda belirtmek istiyorsanız, şu satırı değiştirin:
Set xRg = Application.InputBox("Lütfen adresler listesini seçin:", "Kutools for Excel", xTxt, , , , ,8)
şu satır ile değiştirin
Set xRg = Range("A2:A7")
2) Kendi e-posta konunuzu ve gövdenizi aşağıdaki satırlarda belirtebilirsiniz:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) E-postayı yeni mesaj pencereleri açılmadan doğrudan göndermek için, şu satırı değiştirin:
.Display
şu satır ile değiştirin
.Send

Bu örnekte, seçilen aralıkta altı e-posta adresi vardır, bu nedenle altı ayrı Outlook mesaj penceresi otomatik olarak oluşturulacak ve her birinin Alıcı alanında farklı bir e-posta adresi yer alacaktır. Ekran görüntüsüne bakın:

A screenshot of multiple Outlook message windows with separate email addresses in the To field

5. Son olarak, her bir e-postayı göndermek için "Gönder" butonuna tıklayın.


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

Bu bölümde, Excel'den gönderilen e-postalara ek dosya veya Outlook varsayılan imzası eklemenin yolları gösterilecektir.

2.1 Excel'den gönderilen e-postalara ek dosya ekleme

Burada, ek dosya eklemenin farklı durumları açıklanmıştır ve ihtiyacınıza göre yöntemi seçebilirsiniz. Bu bölümde şunları öğrenebilirsiniz (ilgili yönteme gitmek için aşağıdaki bağlantılardan birine tıklayın):


2.1.1 Belirli bir dosyayı ek olarak e-posta ile gönderme

Aşağıdaki VBA kodunu kullanarak, bir klasördeki bir veya birden fazla dosyayı Excel'den ek olarak e-posta ile gönderebilirsiniz.

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

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül"e tıklayın. 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-posta ile 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, "xxx@aaa.com" ifadesini kendi alıcınızın e-posta adresiyle değiştirin;
2) E-posta konusu ve gövdesini ayrı ayrı ".Subject = "test"" ve ".HTMLBody = "test"" satırlarında değiştirin;
3) Gerekirse Cc ve Bcc alıcıları ekleyebilirsiniz. Sadece aşağıdaki iki satırı ".To = xxx@aaa.com" satırının altına ekleyin.
.CC = "e-posta adresi"
.BCC = "e-posta adresi"

3. Ardından "Araçlar" > "Başvurular"a tıklayın. "Başvurular – VBAProject" iletişim kutusunda "Microsoft Outlook16.0 Object Library" kutusunu bulun ve işaretleyin, ardından değişiklikleri kaydetmek için "Tamam" butonuna tıklayın.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. "F5" tuşuna basarak kodu çalıştırın, ardından bir "Gözat" penceresi açılır. E-postaya eklemek istediğiniz dosyaları seçin ve "Tamam"a tıklayın.

A screenshot of the 'Browse' window for selecting files to attach to an email in Exce

Daha sonra bir mesaj penceresi açılır. Seçilen dosyaların Ekler alanında görüntülendiğini görebilirsiniz.

A screenshot of the Outlook message window with selected files displayed as attachments


2.1.2 Geçerli çalışma sayfasını ek olarak e-posta ile gönderme

Geçerli çalışma sayfasını Excel'den ek olarak e-posta ile göndermek istiyorsanız, bu bölümdeki VBA betiğini uygulayabilirsiniz.

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

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "ekle" > "Modül"e tıklayın. Ardından aşağıdaki VBA kodunu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Geçerli çalışma sayfasını ek olarak e-posta ile 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, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı ".Subject = "kte features"" ve ".Body = " Lütfen bu belgeyi kontrol edin ve okuyun."" satırlarında değiştirin;
3) Aşağıdaki iki satırda:
.CC = "e-posta adresi"
.BCC = "e-posta adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki “e-posta adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

3. "F5" tuşuna basarak kodu çalıştırın, ardından geçerli çalışma sayfası bir Excel çalışma kitabı olarak kaydedilir ve otomatik olarak bir mesaj penceresine ek olarak eklenir. Ekran görüntüsüne bakın:

A screenshot of the Outlook message window with the current worksheet saved and attached as an Excel workbook

Not: Sadece geçerli çalışma sayfasını içeren ekli çalışma kitabı, orijinal çalışma kitabı ile aynı ada sahiptir. Ayrıca kodu çalıştırdığınız zaman da dosya adına eklenir.


2.1.3 Geçerli çalışma kitabını ek olarak e-posta ile gönderme

Excel'den geçerli çalışma sayfasını ek olarak e-posta ile göndermeyi öğrendikten sonra, burada tüm çalışma kitabını ek olarak göndermek için başka bir VBA betiği sunuyoruz. Lütfen aşağıdaki adımları uygulayın.

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

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

VBA kodu: Excel'den geçerli çalışma kitabını ek olarak e-posta ile 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, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı ".Subject = "kte features"" ve ".Body = " Lütfen bu belgeyi kontrol edin ve okuyun."" satırlarında değiştirin;
3) Aşağıdaki iki satırda:
.CC = "e-posta adresi"
.BCC = "e-posta adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "e-posta adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

3. "F5" tuşuna basarak kodu çalıştırın, ardından geçerli çalışma kitabı otomatik olarak mesaj penceresine ek olarak eklenir. Ekran görüntüsüne bakın:

A screenshot of the Outlook message window with the current workbook attached automatically


2.1.4 Tüm çalışma kitabını PDF ek olarak e-posta ile gönderme

Çoğu kişi, bir Excel çalışma kitabını PDF dosyası olarak kaydedip ardından başkalarına ek olarak göndermeyi tercih eder. Bu bölümde, çalışma kitabını manuel olarak PDF olarak kaydetmeden, doğrudan Excel'den açık olan çalışma kitabını PDF ek olarak 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"e 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-posta ile 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, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı .Subject = "test" ve .Body = "test" satırlarında değiştirin;
3) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.
4) PDF dosyasının 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 eklenir. Dosya adına zaman damgası eklenmesini istemiyorsanız, 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. "F5" tuşuna basarak kodu çalıştırın. Ardından geçerli çalışma kitabı otomatik olarak yeni bir mesaj penceresine PDF dosyası olarak eklenir. Ekran görüntüsüne bakın:

A screenshot of the Outlook message window with the current workbook attached as a PDF file


2.1.5 Geçerli çalışma sayfasını PDF ek olarak e-posta ile gönderme

Örneğin, “Monthly sales” adlı bir çalışma kitabınız var ve “sales report” adlı bir çalışma sayfasında bir satış raporu tablosu hazırladınız ve bu sayfayı PDF dosyası olarak iş arkadaşlarınıza göndermek istiyorsunuz. Aşağıdaki VBA kodu işinizi kolaylaştıracaktır.

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

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, "ekle" > "Modül"e tıklayın. Ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.

VBA kodu: Geçerli çalışma sayfasını PDF ek olarak e-posta ile 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, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı .Subject = "test" ve .Body = "test" satırlarında değiştirin;
3) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.
4) PDF dosyasının adı: orijinal çalışma kitabı_adı_orijinal çalışma sayfası_adı şeklinde olacaktır. Bu örnekte, PDF'nin adı Monthly sales_sales report olacaktır.

3. "F5" tuşuna basarak kodu çalıştırın. Ardından geçerli çalışma sayfası otomatik olarak yeni bir mesaj penceresine PDF dosyası olarak eklenir. Ekran görüntüsüne bakın:

A screenshot of the Outlook message window with the current worksheet attached as a PDF file


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

Yukarıdaki örnekte olduğu gibi, Excel'den geçerli çalışma sayfasını PDF dosyası olarak göndermek için yukarıdaki VBA kodunu uyguladınız, ancak Outlook imzası mesaj penceresine eklenemedi. Excel'den gönderilen e-postada Outlook varsayılan imzasını korumak için aşağıdaki yöntem yardımcı olacaktır.

Aşağıda iki VBA kodu listelenmiştir.

VBA kodu1: Outlook imzasını korumaya yardımcı olur.

VBA kodu2: Geçerli çalışma sayfasını PDF ek olarak e-posta ile göndermeye yardımcı olur.

VBA kodu1: Outlook imzasını koru

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

VBA kodu2: Geçerli çalışma sayfasını PDF ek olarak e-posta ile gönder

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, "Alt" + "F11" tuşlarına basarak "Microsoft Visual Basic for Applications" penceresini açmanız gerekir.

2. "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül"e tıklayın. Ardından yukarıdaki VBA kodu2'yi Modül (Kod) penceresine yapıştırın.

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

1) ".Body" satırını "VBA kodu1" 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:

A screenshot showing the modified VBA code with the .Body line replaced and .Display placed under With OutlookMail

İşte değişiklikten sonraki 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. "F5" tuşuna basarak kodu çalıştırın. Ardından, geçerli çalışma sayfası PDF dosyası olarak eklenmiş yeni bir mesaj penceresi açılır ve Outlook varsayılan imzası otomatik olarak e-posta gövdesinin sonuna eklenir.

A screenshot of an email in Outlook with the default signature automatically inserted at the end of the email body


3. Belirli bir koşul sağlandığında Excel'den otomatik e-posta gönderme (VBA betikleriyle)

Yukarıdaki örneklerde, e-posta göndermek için kodu manuel olarak çalıştırmanız gerekiyordu. Eğer belirli bir koşul sağlandığında kodun otomatik olarak tetiklenmesini istiyorsanız, örneğin bir hücre belirli bir değere ulaştığında, bir hücre değeri değiştiğinde, bir tarih geldiğinde vb., e-posta otomatik olarak gönderilecektir. Bu bölümde, Excel kullanıcılarının Google'da sıkça aradığı koşullar listelenmiştir 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, bir satış tablonuz olduğunu ve D6 hücresinde satış toplamının bulunduğunu varsayalım. Satış toplamına göre patronunuza otomatik olarak e-posta göndermek istiyorsunuz; örneğin, satış toplamı10000'i aştığında otomatik olarak e-posta oluşturulsun veya gönderilsin, ancak satış toplamı10000'e eşit veya daha az ise hiçbir işlem yapılmasın.

1. Satış tablosunun bulunduğu çalışma sayfasında, sayfa sekmesine sağ tıklayın ve açılan menüden "Kodu Görüntüle"yi seçin.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu "Sayfa (Kod)" penceresine 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", değeri temel alınarak e-posta göndereceğiniz hücredir.
2) ">10000" koşuldur, yani D6 hücresindeki değer10000'den büyük olduğunda e-posta gönderilecektir.
3) Aşağıdaki satırdaki "Range(“D6”)" ifadesi, e-posta gövdesinin D6'daki değeri referans alacağını belirtir.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) ".To = xxx@aaa.com" satırında, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
5) E-posta konusunu .Subject = "test" satırında değiştirin.
6) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

Bundan sonra, D6 hücresindeki değer10000'i aştığında, aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta oluşturulacaktır.

A screenshot of an email created in Outlook when the value in cell D6 exceeds 10000 in Excel


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ın ve bir çalışma sayfasında satış toplamının bulunduğu bir çalışma kitabı aldığınızı varsayalım. Satış toplamını doğrulamanız ve eğer satış toplamı değiştirilirse, çalışma kitabını gönderen kişiye geri gönderip hücrenin değiştirildiğini bildirmeniz gerekir.

1. Satış tablosunun bulunduğu çalışma sayfasında, sayfa sekmesine sağ tıklayın ve açılan menüden "Kodu Görüntüle"yi seçin.

2. Açılan "Microsoft Visual Basic for Applications" penceresinde, aşağıdaki VBA kodunu Sayfa (Kod) penceresine 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

Not: Kodda,

1) Kodda "B14", B14 hücresinin değeri değiştiğinde e-posta göndereceğiniz anlamına gelir.
2) ".To = xxx@aaa.com" satırında, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
3) E-posta konusunu .Subject = "Çalışma sayfası değiştirildi" satırında değiştirin.
4) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

Bundan sonra, B14 hücresinin değeri değiştiğinde, aşağıdaki ekran görüntüsünde gösterildiği gibi otomatik olarak bir Outlook mesajı oluşturulacaktır.

A screenshot of an email created in Outlook when the value in cell B14 changes


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

Bir çalışma kitabını başkalarıyla paylaşmanız gerektiğinde, genellikle çalışma kitabını kaydedip, e-posta istemcisini açıp, bu çalışma kitabını ek olarak yeni bir e-posta oluşturup, gerekli alanları doldurup e-postayı gönderirsiniz. Bu bölümde, her kaydettiğinizde otomatik olarak e-posta oluşturmanın yolunu göstereceğim. Lütfen aşağıdaki adımları uygulayın.

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

2. Bu pencerede, "Project" bölmesinde "ThisWorkbook"a çift tıklayın, ardından aşağıdaki VBA kodunu "ThisWorkbook (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

Not: Kodda,

1) ".To = xxx@aaa.com" satırında, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı ".Subject = "Çalışma kitabı güncellendi"" ve ".Body = "Merhaba," & Chr(13) & Chr(13) & "Dosya güncellendi."" satırlarında değiştirin.
3) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki “E-posta Adresi" metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

Bundan sonra, "Ctrl" + "S" tuşlarına basarak veya "Kaydet" butonuna tıklayarak çalışma kitabını kaydettiğinizde, otomatik olarak bir Outlook e-postası oluşturulacaktır. Mevcut çalışma kitabının ek olarak eklendiğini ve alanların belirttiğiniz içerikle doldurulduğunu görebilirsiniz. Ekran görüntüsüne bakın:

A screenshot showing an Outlook email with the current workbook attached, ready to be sent automatically

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

1) "Dosya" > "Farklı Kaydet"e tıklayın ve ardından dosyayı kaydetmek için bir klasör seçin.
2) "Farklı Kaydet" iletişim kutusunda, "Dosya adı" kutusuna ihtiyacınıza göre bir ad verin, "Kaydetme Biçimini Belirt" açılır listesinden "Excel Makro Etkin Çalışma Kitabı"nı seçin ve son olarak "Kaydet" butonuna tıklayın. Ekran görüntüsüne bakın:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook


3.4 Belirli bir saatte otomatik olarak e-posta gönderme

Diyelim ki bir görev atama çalışma kitabını "her Cuma sabahı saat9'da" birine göndermeniz gerekiyor ve bunu Excel'de e-posta istemcisini manuel olarak kullanmadan otomatik olarak yapmak istiyorsunuz. Bu bölümde bunu nasıl yapacağınızı göstereceğim.

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

2. "Microsoft Visual Basic for Applications" penceresinde, "Ekle" > "Modül"e tıklayın. Ardından aşağıdaki VBA kodunu Modül penceresine yapıştırın.

VBA kodu1 : Excel'den geçerli çalışma kitabını ek olarak e-posta ile 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, "Project" bölmesinde "ThisWorkbook"a çift tıklayın, ardından aşağıdaki VBA kodunu "ThisWorkbook (Kod)" penceresine yapıştırın.

A screenshot showing the VBA code editor with the 'Workbook_Open' event and 'Application.OnTime' function to schedule email sending

VBA kodu2: Belirli bir saatte otomatik olarak e-posta gönderme

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

Notlar:

1) VBA kodu1'de, aşağıdaki satırdaki "Cuma" ifadesi, e-postanın her Cuma otomatik olarak gönderileceği anlamına gelir;
If Weekday(Date) = vbFriday Then
2) VBA kodu1 ve VBA kodu2'de, "09:00:00" zamanı, e-postanın belirli bir günde saat9'da 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şturulacaktır. Mesaj penceresinin açılmasını istemiyorsanız ve doğrudan göndermek istiyorsanız, VBA kodu1'den ".Display" satırını kaldırın ve ‘.Send satırının başındaki "apostrof"u kaldırın.

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

4.1) "Dosya" > "Farklı Kaydet"e tıklayın ve ardından dosyayı kaydetmek için bir klasör seçin.
4.2) "Farklı Kaydet" iletişim kutusunda, "Dosya adı" kutusuna ihtiyacınıza göre bir ad verin, "Kaydetme Biçimini Belirt" açılır listesinden "Excel Makro Etkin Çalışma Kitabı"nı seçin ve son olarak "Kaydet" butonuna tıklayın. Ekran görüntüsüne bakın:

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook

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


4. Ek konular

Bu bölümde, Excel'den e-posta gönderirken karşılaşabileceğiniz diğer konular derlenmiştir.

4.1 Excel'den bir aralığı e-posta ile gönderme (VBA betiğiyle)

Bir Excel çalışma sayfasında aşağıdaki ekran görüntüsünde olduğu gibi aylık satış tablosu olduğunu ve bu tabloyu başkalarına e-posta gövdesi olarak veya doğrudan ek olarak göndermek istediğinizi varsayalım. Bunu yapmak için iki yöntem sunuyoruz.

4.1.1 Bir aralığı e-posta gövdesinin parçası olarak Excel'den gönderme

Aşağıdaki VBA kodunu çalıştırarak, bir hücre aralığını Excel'den e-posta gövdesinin parçası olarak gönderebilirsiniz.

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

2. "Microsoft Visual Basic for Applications" penceresinde, "Araçlar" > "Başvurular"a tıklayın. Ardından "Microsoft Outlook16.0 Object Library" kutusunu işaretleyin ve "Başvurular – VBAProject" iletişim kutusunda "Tamam"a tıklayın.

3. "Ekle" > "Modül"e tıklayın, ardından aşağıdaki VBA kodunu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Bir hücre aralığını Excel'den e-posta gövdesinin parçası olarak 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

Not: Kodda,

1) ".To = xxx@aaa.com" satırında, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

4. "F5" tuşuna basarak kodu çalıştırın. Açılan "Kutools for Excel" iletişim kutusunda, e-posta gövdesinin parçası olarak göndermek istediğiniz hücre aralığını seçin ve "Tamam"a tıklayın. Ekran görüntüsüne bakın:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as part of an email body

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

A screenshot of an Outlook email with the selected range from Excel inserted into the email body


4.1.2 Bir aralığı ek olarak Excel'den e-posta ile gönderme

Bir çalışma sayfasındaki bir hücre aralığını Excel'den ek olarak e-posta ile göndermek istiyorsanız, 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"e tıklayın. Ardından aşağıdaki VBA kodunu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Bir aralığı ek olarak Excel'den e-posta ile 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, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
2) E-posta konusu ve gövdesini ayrı ayrı ".Subject = "2021 için aylık satışlar"" ve ".Body = "Merhaba, lütfen bu belgeyi kontrol edin ve okuyun."" satırlarında değiştirin;
3) Aşağıdaki iki satırda:
.CC = "e-posta adresi"
.BCC = "e-posta adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "e-posta adresi” metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

3. "F5" tuşuna basarak kodu çalıştırın. Açılan "Kutools for Excel" iletişim kutusunda, e-posta ekinde göndermek istediğiniz hücre aralığını seçin ve "Tamam"a tıklayın. Ekran görüntüsüne bakın:

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as an attachment in an email

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

A screenshot of an Outlook email with the selected range from Excel saved as an attachment


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

Excel'den e-posta göndermek için bir komut düğmesine tıklayarak makro tetiklemek istiyorsanız, örneğin geçerli çalışma kitabını ek olarak başkalarına göndermek için çalışma sayfasında bir komut düğmesine tıklamak gibi, aşağıdaki adımları izleyerek bunu gerçekleştirebilirsiniz.

1. "Geliştirici" > "Ekle" > "Komut Düğmesi (ActiveX Denetimi)"ne tıklayın. Ardından çalışma sayfasına bir komut düğmesi çizin.

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

2. "Alt" + "F11" tuşlarına basarak "Microsoft Visual Basic for Applications" penceresini açın. Pencerede, "Ekle" > "Modül"e tıklayın, ardından (Excel'den geçerli çalışma kitabını ek olarak göndermek için kullanılan kodu) Modül (Kod) penceresine yapıştırın.

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

Not:2. adımda oluşturduğunuz makronun adı burada "SendWorkbook"tur.

3. "Alt" + "Q" tuşlarına basarak "Microsoft Visual Basic for Applications" penceresini kapatın.

4. Şimdi makroyu komut düğmesine atamanız gerekir. Komut düğmesine sağ tıklayın, açılan menüden "Kodu Görüntüle"yi seçin.

5. Ardından "Microsoft Visual Basic for Applications" penceresi açılır, "Sayfa (Kod)" penceresinde aşağıdaki iki satırı görebilirsiniz.

Private Sub CommandButton1_Click()
End Sub

A screenshot of the Microsoft Visual Basic for Applications window showing the CommandButton1_Click code

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

A screenshot of editing the VBA code to assign an existing macro to the command button

7. "Alt" + "Q" tuşlarına basarak "Visual Basic Editor"u kapatın ve "Geliştirici" > "Tasarım Modu"na tıklayarak tasarım modunu kapatın.

A screenshot of turning off Design Mode in the Developer tab

Artık komut düğmesine tıklayarak geçerli çalışma kitabını e-posta ekinde gönderebilirsiniz.


4.3 Belirli bir e-posta hesabından e-posta gönderme

Genellikle, Excel'den VBA koduyla e-posta gönderildiğinde, gönderenin e-posta hesabı Outlook'taki varsayılan hesaptır. Outlook'ta birden fazla e-posta hesabı yapılandırdıysanız ve Excel'den e-posta gönderirken varsayılan hesap yerine belirli bir hesabı kullanmak istiyorsanız, aşağıdaki VBA kodu yardımcı olabilir.

Bu durumda aşağıdaki kodlar gereklidir.

VBA kodu1:

Dim OutlookMail As Outlook.MailItem

VBA kodu2:

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ı nasıl kullanılır?

1) Kendi kodunuzda, "Dim OutlookMail As Object” gibi bir satırı VBA kodu1 ile değiştirmeniz gerekir;
2) Kendi kodunuzda "On Error Resume Next” satırının altına VBA kodu2'yi ekleyin. Ardından, VBA kodu2'de e-postayı göndereceğiniz e-posta adresini belirtin.

Bu örnekte, Excel'den geçerli çalışma kitabını ek olarak göndermek için belirli bir e-posta hesabı belirleyeceğiz. Lütfen aşağıdaki adımları uygulayın.

1. "Alt" + "F11" tuşlarına basın. "Microsoft Visual Basic for Applications" penceresinde, "Araçlar" > "Başvurular"a tıklayın. Ardından "Microsoft Outlook16.0 Object Library" kutusunu işaretleyin ve "Başvurular – VBAProject" iletişim kutusunda "Tamam"a tıklayın.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

2. "Ekle" > "Modül"e tıklayın. Ardından aşağıdaki VBA kodunu "Modül (Kod)" penceresine yapıştırın.

VBA kodu: Excel'den belirli bir Outlook hesabı üzerinden geçerli çalışma kitabını e-posta ekinde 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. "F5" tuşuna basarak kodu çalıştırın. Ardından bir Outlook e-posta mesajı açılır, "Kimden" alanında kodda belirttiğiniz e-posta hesabının yer aldığını görebilirsiniz.


4.4 Bir tarih geldiğinde e-posta gönderme

Belirli bir son tarihe 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 var ve "E2:E7 aralığındaki son tarih bugünden itibaren7 gün veya daha az ise (bugünün tarihi2022/8/4 varsayılıyor)", ilgili proje sorumlularına otomatik olarak e-posta gönderilecek ve projenin süresinin dolmak üzere olduğu bildirilecektir.

1. Proje tablosunun bulunduğu çalışma sayfasında, sayfa sekmesine sağ tıklayın ve açılan menüden "Kodu Görüntüle"yi seçin.

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

VBA kodu: Son tarih 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

Not: Kodda,

1) Aşağıdaki satırlarda, "E2:E7" e-postaların gönderileceği son tarihleri içerir. "C2:C7" e-postaların gönderileceği e-posta adreslerini içerir. "D2:D7" ise, projenin süresinin dolmak üzere olduğunu bildirmek için e-posta gövdesine eklenecek notları 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, son tarihin bugünden itibaren1 günden fazla ve7 günden az veya eşit olması gerektiği anlamına gelir. İhtiyacınıza göre değiştirebilirsiniz.
If CDate(xRgDateVal) - Date <=7 And CDate(xRgDateVal) - Date >0 Then
3) ".To = xxx@aaa.com" satırında, "xxx@aaa.com" ifadesini gerçek alıcının e-posta adresiyle değiştirin. Birden fazla e-posta adresine ihtiyacınız varsa, bunları noktalı virgül ile ayırın.
4) E-posta konusunu ".Subject = "Çalışma sayfası değiştirildi"" satırında değiştirin.
5) Aşağıdaki iki satırda:
.CC = "E-posta Adresi"
.BCC = "E-posta Adresi"
Cc ve bcc alıcılarını eklemek istiyorsanız, satırlardaki "E-posta Adresi" metnini ihtiyacınız olan adreslerle değiştirin.
Cc ve bcc alıcılarına ihtiyacınız yoksa, her satırın başına bir apostrof ekleyin.

3. "F5" tuşuna basarak kodu çalıştırın. Son tarih koşulları sağlanıyorsa, ilgili e-posta oluşturulacaktır. Bu durumda, aşağıdaki ekran görüntüsünde gösterildiği gibi iki e-posta oluşturulacaktır.

A screenshot of two emails created automatically based on expiration date matching conditions in Excel


5. Excel'den kolayca e-posta göndermenize yardımcı olacak pratik bir araç

Eğer VBA konusunda yeniyseniz, yukarıdaki yöntemleri uygulamak sizin için kolay olmayabilir. Burada "Kutools for Excel"'in Send Emails özelliğini öneriyoruz; bu özellikle, sadece birkaç tıklama ile Excel'den kolayca e-posta gönderebilirsiniz. Lütfen aşağıdaki adımları uygulayın.

Kutools for Excel, karmaşık görevleri basitleştirmek için 300'den fazla gelişmiş özellik sunar ve yaratıcılığı ve verimliliği artırır. Yapay zeka yetenekleriyle entegre olarak, Kutools görevleri hassas bir şekilde otomatikleştirir ve veri yönetimi işlerini kolaylaştırır. Kutools for Excel hakkında detaylı bilgi...  Ücretsiz deneme...
5.1 İhtiyacınız olan e-posta alanlarını içeren bir posta listesini kolayca oluşturun

Send Emails özelliğini uygulamadan önce, ihtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturmanız gerekir. Burada Posta Listesi Oluştur özelliği yardımcı olabilir.

1. "Kutools Plus" > "Posta Listesi Oluştur"a tıklayın.

2. Açılan "Posta Listesi Oluştur" penceresinde aşağıdaki ayarları yapmanı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) "Eklemek için dosya seçin" bölümünde, ihtiyacınız olabilecek bir veya daha fazla eki işaretleyin;
2.3) Posta listesinin yerleştirileceği bir aralık belirtin;
2.4) "Oluştur" butonuna 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 bir örnek posta listesi tablosu oluşturulur.

3. Şimdi örnekteki verileri kendi alan verilerinizle değiştirmeniz gerekir.

Artık bir posta listesi tablosu oluşturdunuz. Lütfen oluşturduğunuz alanlara göre Excel'den e-posta göndermek için "Send Emails" özelliğini uygulamaya devam edin.

Kutools for Excel - Excel'i 300'den fazla temel araçla güçlendirin. Sürekli ücretsiz AI özelliklerinden yararlanın! Hemen Edinin


5.2 Posta listesinde oluşturduğunuz alanları içeren e-postaları kolayca gönderin

E-postalarınızda ihtiyacınız olabilecek alanları içeren posta listesini oluşturduktan sonra (nasıl oluşturulacağını öğrenmek için tıklayın), artık bu alanlarla Excel'den e-posta gönderebilirsiniz.

1. Tüm posta listesini seçin, "Kutools Plus" > "Send Emails"e tıklayın.

2. "Send Emails" iletişim kutusunda aşağıdaki yapılandırmayı yapın.

2.1) Alanlar, posta listesinde belirttiğiniz alanlara göre her alanın kutusuna otomatik olarak doldurulur;
İpucu: Bu aşamada belirli bir alana ihtiyacınız yoksa, açılır listeden boş bir seçenek seçin.
2.2) "Yer Tutucu Ekle" (isteğe bağlı): E-posta gövdesine değişken bilgi eklemeniz gerekiyorsa.
Örneğin, birden fazla alıcıya kişiselleştirilmiş isimle e-posta göndermeniz gerekiyorsa, imleci e-posta gövdesinde yer tutucu eklemek istediğiniz yere yerleştirin, “E: Adı” (veya posta listenizdeki başka bir isim alanı) alanını seçin ve ardından "Yer Tutucu Ekle" butonuna tıklayın;
Alıcılar e-postayı aldığında, e-posta gövdesi aynı kalır ancak isimler her biri için benzersiz olur.
2.3) E-posta gövdesini ihtiyacınıza göre oluşturun;
2.4) "Outlook kullanarak gönder" kutusunun işaretli olduğundan emin olun;
2.5) "Gönder" butonuna tıklayın. Ekran görüntüsüne bakın:

3. Ardından, kaç e-posta gönderildiğini bildiren bir "Kutools for Excel" iletişim kutusu açılır, bu kutuyu kapatmak için "Tamam" butonuna tıklayın.

İpucu: Gönderdiğiniz e-postaları kontrol etmek için Outlook'taki "Gönderilmiş Öğeler" klasörüne gidebilirsiniz.


5.3 HTML gövdeli e-postaları kolayca gönderin (bağlantı, resim vb. dahil)

Bu Send Emails özelliği, bağlantı, resim, farklı yazı tipi boyutları ve renkleri gibi öğeleri içeren HTML formatında e-posta oluşturmanıza olanak tanır.

İhtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturduktan sonra, Send Emails iletişim kutusunu yapılandırırken, araç çubuğundaki seçenekleri kullanarak 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 varsayılan imzası ile e-posta göndermek için bir VBA kodu gösterdik. Burada ise Send Emails özelliğiyle, sadece bir seçeneği işaretlemeniz yeterlidir; böylece Excel'den gönderdiğiniz e-postalara Outlook varsayılan imzası otomatik olarak eklenir.

İhtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturduktan sonra, Send Emails iletişim kutusunu yapılandırırken "Seçenekler" > "Outlook’un imza ayarlarını kullan"a tıklamanız gerekir.

Not: Outlook’un imza ayarlarını kullan seçeneğinin önünde bir onay işareti olduğundan emin olun.

Alıcılar e-postayı aldığında, e-posta gövdesinin sonunda Outlook varsayılan imzası görüntülenir.


5.5 Belirli bir e-posta hesabından kolayca e-posta gönderin

Excel'den e-posta göndermek için varsayılan hesap yerine belirli bir e-posta hesabı kullanmak istiyorsanız, Send Emails özelliği bunu kolayca yapmanıza yardımcı olur.

İhtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturduktan sonra, Send Emails iletişim kutusunu yapılandırırken "Seçenekler" > "Kimden gönderildi"ye tıklayın, ardından e-postaları göndermek istediğiniz e-posta hesabını seçin.

Not:E-posta hesabını seçtikten sonra, önünde bir onay işareti görüntülenecektir.

Bu Send Emails özelliği hakkında daha fazla bilgi almak için buraya tıklayın.

Kutools for Excel - Excel'i 300'den fazla temel araçla güçlendirin. Sürekli ücretsiz AI özelliklerinden yararlanın! Hemen Edinin

Sonuç olarak, Excel'den e-posta göndermek günlük işlerimizde oldukça faydalıdır. Bu makalede Excel'den e-posta göndermenin kapsamlı konuları ele alınmıştır; başka konular veya daha kolay çözümler varsa, lütfen yorum bırakarak bana bildirin.

En İyi Ofis Verimlilik Araçları

🤖 Kutools AI Asistanı: Veri analizinde devrim yaratın: Akıllı Yürütme   |  Kod Oluştur  |  Özel Formüller Oluştur  |  Verileri Analiz Et ve Grafikler Oluştur  |  Geliştirilmiş İşlevleri Çağır
Popüler Özellikler: Yinelenenleri Bul, Vurgula veya İşaretle   |  Boş Satırları Sil   |  Sütunları veya Hücreleri Verileri Kaybetmeden Birleştir   |   Formül Olmadan Yuvarla ...
Süper ARA: Çok Kriterli Düşeyara    Çoklu Değer Düşeyara  |   Çoklu sayfa araması   |   Bulanık Eşleme ....
Gelişmiş Açılır Liste: Hızlıca Açılır Liste 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 Değiştir  |  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ı & Çalışma Sayfası Yöneticisi   |  Otomatik Metin Kütüphanesi (Auto Text)   |  Tarih Seçici   |  Veri Birleştir   |  Hücreleri Şifrele/Şifre Çöz    Listeye Göre E-posta Gönder   |  Süper Filtre   |   Özel Filtre (kalın/italik/üstü çizili filtrele...) ...
En İyi15 Araç Seti12 Metin Aracı (Metin Ekle, Belirli Karakterleri Sil, ...)   |   50+ Grafik Türü (Gantt Grafiği, ...)   |   40+ Pratik Formül (Doğum tarihine dayanarak yaş hesapla, ...)   |   19 Ekleme Aracı (QR Kodu Ekle, Yoldan Resim Ekle, ...)   |   12 Dönüşüm Aracı (Kelimeye Dönüştür, Para Birimi Dönüştürme, ...)   |   7 Birleştir & Böl Aracı (Gelişmiş Satırları Birleştir, Hücreleri Böl, ...)   |   ... ve daha fazlası

Kutools for Excel ile Excel becerilerinizi geliştirin ve daha önce hiç olmadığı kadar verimli olun. Kutools for Excel, üretkenliğinizi artırmak ve zamanınızı kaydetmek için300'den fazla gelişmiş özellik sunar.  En çok ihtiyacınız olan özelliği almak için buraya tıklayın...


Office Tab, Office'e sekmeli arayüz getirir ve işinizi çok daha kolaylaştırır

  • Word, Excel, PowerPoint'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
  • Aynı pencerenin yeni sekmelerinde birden fazla belge açın ve oluşturun, yeni pencerelerde değil.
  • Verimliliğinizi %50 artırır ve her gün yüzlerce fare tıklamasını azaltır!