Excel eğitimi – Excel'den e-posta gönderin
Normalde, e-posta göndermek için Outlook, Gmail vb. e-posta istemcilerini kullanırız. Ancak, birçok kişi verileri Excel çalışma kitaplarında depolar ve onunla çalışırken bazı verileri diğerlerine de göndermeleri gerekir. Bu nedenle, bir e-posta istemcisini çalıştırma zamanından tasarruf sağlayan Excel çalışma kitabından doğrudan e-posta göndermeleri gerekir. Bu adım adım öğretici, farklı koşullar altında Excel'den nasıl e-posta göndereceğinizi gösterecektir.
not: Aşağıdaki yöntemleri uygulamadan önce bilgisayarınızda bir Outlook e-posta istemcisi yapılandırmanız ve bunu varsayılan e-posta istemciniz olarak ayarlamanız gerekir.
İçindekiler: [ Saklamak ]
1. Excel'den e-posta göndermenin temelleri
Bu bölümde, Excel'den e-posta göndermenin temelleri anlatılmaktadır.
1.1 Excel'in yerleşik işlevleriyle Excel'den e-posta gönderin
Yalnızca Kime, Konu, Bilgi ve gövde alanları dahil olmak üzere yalnızca Excel'den basit e-postalar göndermek istiyorsanız. Excel'deki yerleşik işlevler yardımcı olabilir.
1.1.1 Excel'den bir formülle e-posta gönderin
Aşağıdaki tabloda gösterildiği gibi, verilen alanlara göre Excel'den farklı e-postalar göndermek için, bunu yapmak için farklı Köprü formülleri oluşturmak için verilen alanların hücre referanslarını kullanabilirsiniz. E-posta köprülerini oluşturduktan sonra, otomatik olarak bir e-posta göndermek için ihtiyacınız olan köprüye tıklayabilirsiniz.
Not: Kime veya Bilgi alanlarında birden fazla alıcı varsa, lütfen bunları noktalı virgülle ayırın.
Bu bölüm, e-posta adresi, Cc alıcıları, konu satırı ve gövde metnini Köprü formülüne ayrı ayrı ekleme adımlarını göstermek için dört bölüme ayrılmıştır. Lütfen aşağıdaki gibi yapın.
Sözdizimi ve argümanlar KÖPRÜ işlevi aşağıdaki gibidir.
Sözdizimi
HYPERLINK(link_location, [friendly_name])
Argümanlar
1.1.1.1 Köprü formülüne e-posta adresi ekleyin
Burada kullanıyoruz "posta:" bir e-posta alıcısı eklemek için formülün bir parçası olarak. Bu örnekte, ilk alıcının e-posta adresi B2 hücresindedir, bu nedenle "mailto:" eklememiz ve onu B2 hücresine göndermemiz gerekiyor.
“mailto:”&B2
1. Köprüyü görüntülemek için bir hücre seçin. Bu durumda F2 hücresini seçiyorum.
2. Ardından içine aşağıdaki formülü girin.
=HYPERLINK("mailto:"&B2)
not: tuşuna basarsanız Keşfet tuşuna bastığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi bir köprü oluşturulacaktır. Bağlantıya tıkladığınızda, bir Outlook e-postası oluşturulur ve alıcının e-posta adresi Kime alanına otomatik olarak doldurulur.
Alıcının e-posta adresi artık Köprü formülüne eklenir. Konu satırını, Cc alıcılarını ve gövde metnini ihtiyaç duyduğunuz şekilde eklemek için lütfen aşağıdaki adımlarla devam edin.
1.1.1.2 Köprü formülüne Cc alıcıları ekleyin
Bilgi alıcısını/alıcılarını Köprü işlevine eklemek için lütfen "?cc=" aşağıdaki gibi formülün bir parçası olarak.
F2 hücresindeki formül aşağıdaki gibi olmalıdır:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Köprü formülüne konu satırı ekleme
Konu satırını Köprü işlevine eklemek için lütfen ekleyin "&konu=" aşağıdaki gibi formülün bir parçası olarak.
F2 hücresindeki formül şimdi aşağıdaki gibi görünmelidir:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Köprü formülüne satır sonları içeren gövde metni ekleme
Son adım, gövde metnini Köprü formülüne eklemektir. Örnekte görebileceğiniz gibi, E2'deki iki metin satırı bir satır sonu ile ayrılmıştır ve satır sonunu e-posta gövdesinde tutmak istiyorsunuz. Outlook bu durumda satır sonunu tanıyor mu? Kontrol edelim.
Gövde metnini Köprü formülüne eklemek için eklemeniz gerekir. “&gövde=” aşağıdaki gibi formülün bir parçası olarak.
F2 hücresindeki formül şimdi aşağıdaki gibi görüntülenir:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Not: Basarsanız Keşfet tuşuna basın ve bağlantıya tıklayın. Yeni e-postada, e-posta gövdesindeki içeriğin aynı satırda görüntülendiğini görebilirsiniz.
E-posta gövdesini ayrı satırlarda görüntülemek için, satır başı karakter kodunu ekleyerek hücre içeriğini değiştirmeniz gerekir. % 0A satır sonu eklemeniz gereken metne. Ekran görüntüsüne bakın:
1.1.1.5 Köprü için görüntülenecek metni belirtin
Yukarıdaki adımlarda, Link_location argümanını e-posta alanlarıyla bitirdik. İşte bu bölümde, bir sonraki argümanı [arkadaşça_adı] bitireceğiz.
Bu durumda, köprü hücresinin metni " olarak görüntülemesini istiyorum.xx'e e-posta gönder”, burada xx, A2'deki alıcının adıdır. Bu nedenle, F2'deki formül şu şekilde değiştirilmelidir:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Basın Keşfet sonucu almak için anahtar.
Bu formül hücresini seçin ve Otomatik Doldurma Kolu diğer e-posta köprülerini oluşturmak için aşağı Ekran görüntüsüne bakın:
1.1.2 Köprü işleviyle Excel'den e-posta gönderin
Yukarıdaki Köprü formülünü kullanmanın dışında, manuel olarak bir e-posta köprüsü oluşturabilirsiniz. Ekle Köprü Excel'de işlev. Bu bölüm size adımları gösterecek.
1. Köprü eklemek istediğiniz e-postayı sağ tıklayın, Link sağ tıklama menüsünden.
2. Açılırken Köprüyü Ekle iletişim kutusu, aşağıdaki gibi yapılandırmanız gerekir.
Köprüye tıkladığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi belirtilen Kime, Konu ve Gövde alanları ile bir Outlook e-postası oluşturulacaktır.
notlar:
1.2 VBA komut dosyasıyla hücrelerde birden çok alıcıya e-posta gönderin
Yukarıdaki örnekte, bir hücrede noktalı virgülle ayrılmış birden çok e-posta adresinin görüntülendiğini görebilirsiniz. Aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta adresleri listeniz varsa ve hepsine bir e-posta veya bağımsız e-posta göndermek istiyorsanız, aşağıdaki VBA kodu size bir iyilik yapabilir.
1.2.1 VBA komut dosyasıyla hücrelerde birden çok alıcıya e-posta gönderin
1. E-postayı göndermek istediğiniz tüm e-posta adreslerini içeren çalışma sayfasında. basın Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.
2. içinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > Modül, ve ardından aşağıdaki kodu içine yapıştırın Modül (Kod) pencere.
VBA kodu: Bir e-posta adresleri listesine e-posta gönderin
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. Tuşuna basın. F5 kodu çalıştırmak için anahtar ve bir Kutools for Excel iletişim kutusu açılır. E-posta adreslerinin listesini seçin ve tıklayın. OK.
Notlar:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Kodu çalıştırdıktan sonra, seçilen aralıktaki tüm e-posta adresleri mesaj penceresinin Kime alanında görüntülenir. Ekran görüntüsüne bakın:
1.2.2 VBA komut dosyasıyla hücrelerde listelenen her alıcıya ayrı ayrı e-posta gönderin
Yukarıdaki kod, seçilen aralıktaki tüm e-posta adreslerini mesaj penceresinin Kime alanına ekler. Hücrelerde listelenen her e-posta adresine, birbirlerinin e-posta adreslerini görmelerine izin vermeden ayrı ayrı e-posta göndermek istiyorsanız, aşağıdaki VBA betiğini deneyebilirsiniz.
1. E-postaları göndermek istediğiniz tüm e-posta adreslerini içeren çalışma sayfasında. basın Ara Toplam + F11 anahtarları Uygulamalar için Microsoft Visual Basic penceresini açın.
2. içinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > modülve 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önderin
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. Sonra tıklayın Tools > Referanslar. içinde Referanslar - VBAProject iletişim kutusunu bulun ve kontrol edin. Microsoft Outlook 16.0 Nesne Kitaplığı kutusunu işaretleyin ve ardından OK butonuna basarak değişiklikleri kaydedin.
4. Tuşuna basın. F5 kodu çalıştırmak için anahtar ve bir Kutools for Excel iletişim kutusu açılır. E-posta adresi listesini seçin ve tıklayın Tamam.
Notlar:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Bu örnekte, seçilen aralıkta altı e-posta adresi vardır, bu nedenle, aşağıdaki ekran görüntüsünde gösterildiği gibi, Kime alanında listelenen ayrı e-posta adresiyle otomatik olarak altı Outlook mesaj penceresi oluşturulacaktır.
5. Sonunda, tıklayın Gönder E-postayı tek tek göndermek için düğmesine basın.
2. Excel'den gönderilen e-postalara ekler veya Outlook imzası ekleyin (VBA komut dosyalarıyla)
Bu bölüm, Excel'den gönderilen e-postalara ekleri veya Outlook varsayılan imzasını nasıl ekleyeceğinizi gösterecektir.
2.1 Excel'den gönderilen e-postalara ekler ekleyin
Burada ataşman takmanın farklı durumlarını açıklıyoruz ve yöntemi ihtiyaçlarınıza göre seçebilirsiniz. Bu bölümde şunları öğrenebilirsiniz (ilgili yönteme gitmek için aşağıdaki bağlantılardan herhangi birine tıklayın):
2.1.1 Belirli bir dosyayı ek olarak e-posta ile gönderin
Bir klasördeki bir veya daha fazla dosyayı Excel'den ek olarak e-postayla göndermek için aşağıdaki VBA kodunu uygulayabilirsiniz.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > modül. Ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.
VBA kodu: Bir klasördeki dosyaları Excel'den ek olarak e-postayla gönderin
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 = ""
.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:
3. Sonra tıklayın Tools > Referanslar. içinde Referanslar - VBAProject iletişim kutusunu bulun ve kontrol edin. Microsoft Outlook 16.0 Nesne Kitaplığı kutusunu işaretleyin ve ardından OK butonuna basarak değişiklikleri kaydedin.
4. Tuşuna basın. F5 kodu çalıştırmak için anahtar, ardından a Araştır penceresi açılır, lütfen e-postaya eklemeniz gereken dosyaları seçin ve ardından OK.
Ardından bir mesaj penceresi açılır. Ekli alanında seçilen dosyaların ek olarak görüntülendiğini görebilirsiniz.
2.1.2 Mevcut çalışma sayfasını ek olarak e-posta ile gönder
Mevcut çalışma sayfasını Excel'den ek olarak e-posta ile göndermek istiyorsanız, bu bölümde VBA komut dosyasını uygulayabilirsiniz.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın eklemek > modül. Ardından aşağıdaki VBA kodunu yapıştırın. Modül (Kod) pencere.
VBA kodu: Geçerli çalışma sayfasını ek olarak e-postayla gönder
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 = ""
.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:
3. Tuşuna basın. F5 tuşuna basın, ardından geçerli çalışma sayfası bir Excel çalışma kitabı olarak kaydedilir ve ek olarak bir mesaj penceresine otomatik olarak eklenir. Ekran görüntüsüne bakın:
Not: Yalnızca geçerli çalışma sayfasını içeren ekli çalışma kitabı, özgün çalışma kitabıyla aynı ada sahiptir. Kodu çalıştırdığınız zaman da çalışma kitabı adına eklenir.
2.1.3 Geçerli çalışma kitabını ek olarak e-postayla gönderin
Geçerli çalışma sayfasını Excel'den ek olarak e-postayla göndermek için VBA kodunu öğrendikten sonra, burada tüm çalışma kitabını ek olarak e-postayla göndermenize yardımcı olacak başka bir VBA komut dosyası sunuyoruz. Lütfen aşağıdaki gibi yapın.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > Modülü. Ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.
VBA kodu: Geçerli çalışma kitabını Excel'den ek olarak e-postayla gönderin
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 = ""
.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:
3. Tuşuna basın. F5 tuşuna basın, ardından geçerli çalışma kitabı otomatik olarak ek olarak bir ileti penceresine eklenir. Ekran görüntüsüne bakın:
2.1.4 Çalışma kitabının tamamını bir PDF eki olarak e-posta ile gönderin
Çoğu insan, bir Excel çalışma kitabını bir PDF dosyası olarak kaydetme ve ardından onu ek olarak başkalarına gönderme eğilimindedir. Bu bölümde, çalışma kitabını manuel olarak bir PDF dosyası olarak kaydetmeye gerek kalmadan, mevcut açık çalışma kitabını PDF eki olarak Excel'den doğrudan e-posta göndermenin bir yolunu göstereceğim.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > Modülü. Ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.
VBA kodu: Çalışma kitabının tamamını bir PDF eki olarak e-postayla gönderin
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 = ""
.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:
3. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Ardından, geçerli çalışma kitabı otomatik olarak yeni bir mesaj penceresine bir PDF dosyası eki olarak eklenir. Ekran görüntüsüne bakın:
2.1.5 Geçerli çalışma sayfasını bir PDF eki olarak e-posta ile gönderin
Örneğin, “Aylık satışlar” adlı bir çalışma kitabı var ve “satış raporu” adlı bir çalışma sayfasındaki satış raporu tablosunu bitirdiniz ve bu çalışma sayfasını PDF dosyası olarak iş arkadaşlarınıza göndermek istiyorsunuz. Aşağıdaki VBA kodu size bir iyilik yapabilir.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın eklemek > Modülü. Ardından aşağıdaki VBA kodunu Modül (Kod) penceresine yapıştırın.
VBA kodu: Geçerli çalışma sayfasını bir PDF eki olarak e-postayla gönderin
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 = ""
.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:
3. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Ardından, geçerli çalışma sayfası otomatik olarak yeni bir mesaj penceresine bir PDF dosyası eki olarak eklenir. Ekran görüntüsüne bakın:
2.2 Excel'den gönderilen e-postalara Outlook imzası ekleyin
Yukarıdaki durumu örnek olarak alın, mevcut çalışma sayfasını Excel'den bir PDF dosyası eki olarak göndermek için yukarıdaki VBA kodunu uygularsınız, ancak mesaj penceresine Outlook imzası eklenemez. Excel'den gönderilen e-postada Outlook varsayılan imzasını korumak için aşağıdaki yöntem yardımcı olacaktır.
İki VBA kodu aşağıda listelenmiştir.
VBA kodu 1: Kod, Outlook imzasını korumaya yardımcı olur.
VBA kodu 2: Kod, geçerli çalışma sayfasını bir PDF eki olarak e-postayla göndermeye yardımcı olur.
VBA kodu 1: Outlook imzasını koru
.HTMLBody = "Email body" & "
" & .HTMLBody
VBA kodu 2: Geçerli çalışma sayfasını PDF eki olarak e-postayla 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 = ""
.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. Normalde, düğmesine basmanız gerekir. Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.
2. içinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > modül. Ardından yukarıdaki VBA kodu 2'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 kodu 2'yi aşağıdaki gibi değiştirmeniz gerekir:
İşte değişiklikten sonra 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 = ""
.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. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Ardından, mevcut çalışma sayfasının PDF dosyası olarak eklendiği yeni bir mesaj penceresi göreceksiniz, Outlook varsayılan imzası ise e-posta gövdesinin sonuna otomatik olarak eklenecektir.
3. Bir koşul karşılandığında Excel'den otomatik olarak e-posta gönderin (VBA komut dosyalarıyla)
Yukarıdaki örneklerde, e-posta teslimini gerçekleştirmek için kodu manuel olarak çalıştırmanız gerekir. Bir hücre belirli bir değere ulaştığında, bir hücrenin değeri değiştiğinde, bir tarihe ulaşıldığında vb. belirli bir koşul karşılandığında kodu otomatik olarak tetiklemek isterseniz, e-posta otomatik olarak gönderilir. Bu bölüm, belirli bir koşul karşılandığında Excel'den otomatik olarak e-posta göndermenize yardımcı olmak için Excel kullanıcılarının Google'da sıklıkla aradığı koşulları listeler.
3.1 Hücre belirli bir değere ulaştığında otomatik olarak e-posta gönder
Aşağıdaki ekran görüntüsünde gösterildiği gibi, satış toplamını içeren D6 hücreli bir satış tablonuz olduğunu varsayalım. Satış toplamına göre patronunuza otomatik olarak bir e-posta göndermek istiyorsunuz, örneğin satış toplamı 10000'i aştığında otomatik olarak bir e-posta oluşturun veya gönderin, ancak satış toplamı 10000'e eşit veya daha az ise herhangi bir işlem yapılmaz.
1. Satış tablosunu içeren çalışma sayfasında, sayfa sekmesine sağ tıklayın ve Kodu görüntüle sağ tıklama menüsünden.
2. Açılışta Uygulamalar için Microsoft Visual Basic penceresinde aşağıdaki VBA kodunu yapıştırın. Sayfa (Kod) pencere.
VBA kodu: Excel'de bir hücre belirli bir değere ulaştığında otomatik olarak bir e-posta gönderin
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 = ""
.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:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
Şu andan itibaren D6 hücresindeki değer 10000'i aştığında aşağıdaki ekran görüntüsünde gösterildiği gibi bir e-posta oluşturulacaktır.
3.2 Hücre değeri değiştiğinde otomatik olarak e-posta gönder
Aşağıdaki ekran görüntüsünde gösterildiği gibi, farklı çalışma sayfalarında aylık satışları ve bir çalışma sayfasında satış toplamını içeren bir çalışma kitabı aldığınızı varsayalım. Satış toplamını doğrulamanız ve satış toplamı değiştirilirse çalışma kitabını gönderene geri göndermeniz ve göndericiye hücrenin değiştirildiğini bildirmeniz gerekir.
1. Satış tablosunu içeren çalışma sayfasında, sayfa sekmesine sağ tıklayın ve Kodu görüntüle sağ tıklama menüsünden.
2. Açılışta Uygulamalar için Microsoft Visual Basic penceresinde, aşağıdaki VBA kodunu Sayfa (Kod) penceresine yapıştırın.
VBA kodu: Belirtilen hücre değeri değiştiğinde otomatik olarak bir e-posta gönder
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 = ""
.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,
Şu andan itibaren, 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 mesajı oluşturulacaktır.
3.3 Bir çalışma kitabı kaydedildiğinde otomatik olarak e-posta gönder
Değiştirdikten sonra başkalarıyla paylaşılması gereken bir çalışma kitabınız varsa, normalde çalışma kitabını kaydetmeniz, e-posta istemcisini başlatmanız, bu çalışma kitabının ekli olduğu yeni bir e-posta oluşturmanız, ilgili alanları oluşturmanız ve ardından e-postayı göndermeniz gerekir. Bu bölüm, çalışma kitabını her kaydettiğinizde otomatik olarak bir e-posta oluşturma yöntemini gösterecektir. Lütfen aşağıdaki gibi yapın.
1. Tuşuna basın. Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.
2. Bu pencerede çift tıklayın Bu Çalışma Kitabı içinde Proje bölmesi, ardından aşağıdaki VBA kodunu yapıştırın. Bu Çalışma Kitabı (Kod) pencere.
VBA kodu: Bir çalışma kitabı kaydedildiğinde otomatik olarak bir e-posta gönderin
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 = ""
.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,
3. Şu andan itibaren, çalışma kitabını kaydederken Ctrl + S tuşlarına tıklayarak veya İndirim düğmesini tıkladığınızda, otomatik olarak bir Outlook e-postası oluşturulacaktır. Geçerli çalışma kitabının ek olarak eklendiğini ve alanların belirtilen içerikle doldurulduğunu görebilirsiniz. Ekran görüntüsüne bakın:
İpuçları: Bu çalışma kitabını sık kullanıyorsanız, burada çalışma kitabını bir çalışma kitabı olarak kaydetmenizi öneririz. Excel Makro Etkin Çalışma Kitabı VBA komut dosyasını gelecekte kullanmak üzere kaydetmek için. Adımlar aşağıdaki gibidir.
3.4 Belirli bir zamanda otomatik olarak bir e-posta gönderin
Birine görev atama çalışma kitabı içeren bir e-posta göndermeniz gerektiğini varsayalım. her Cuma sabahı saat 9'dave bunu e-posta istemcisini manuel olarak çalıştırmak zorunda kalmadan Excel'de otomatik olarak yapmak istiyorsanız. Bu bölüm size bunu yapmanın yöntemini gösterecektir.
1. Tuşuna basın. Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.
2. içinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > Modülü. Ardından aşağıdaki VBA kodunu Modül penceresine yapıştırın.
VBA code1 : Geçerli çalışma kitabını Excel'den ek olarak e-postayla gönder
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 = ""
.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 çift tıklayın Bu Çalışma Kitabı içinde Proje bölmesi, ardından aşağıdaki VBA kodunu yapıştırın. Bu Çalışma Kitabı (Kod) pencere.
VBA kodu 2: Belirli bir zamanda otomatik olarak bir e-posta gönderin
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
notlar:
4. Kodları kaydedin ve ardından çalışma kitabını aşağıdaki gibi bir Excel makrosu etkin çalışma kitabı olarak kaydedin.
5. Kaydedilmiş makro etkin çalışma kitabınızı 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üm, Excel'den e-posta gönderirken karşılaşabileceğiniz diğer konuları toplar.
4.1 Excel'den bir dizi hücreyi e-postayla gönderme (VBA komut dosyasıyla)
Aşağıdaki ekran görüntüsünde gösterildiği gibi bir Excel çalışma sayfasında aylık satış tablosu olduğunu ve bu aylık satış tablosunu bir e-postanın gövde içeriği veya doğrudan ek olarak başkalarına göndermeniz gerektiğini varsayalım. Burada bunu yapmak için size iki yöntem sunuyoruz.
4.1.1 Excel'den gövde içeriğinin bir parçası olarak bir aralığı e-posta ile gönderin
Excel'den e-posta gövdesi içeriğinin bir parçası olarak bir dizi hücre göndermek için aşağıdaki VBA kodunu çalıştırabilirsiniz.
1. Tuşuna basın. Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.
2. içinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Tools > Referanslar. Ve sonra kontrol edin Microsoft Outlook 16.0 Nesne Kitaplığı kutu ve tıklayın OK içinde Referanslar - VBAProject iletişim kutusu.
3. tık Ekle > modül, ardından aşağıdaki VBA kodunu yapıştırın. Modül (Kod) pencere.
VBA kodu: Excel'den e-posta gövdesi içeriğinin bir parçası olarak bir dizi hücre gönderin
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 = ""
.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,
4. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Açılan içinde Kutools for Excel iletişim kutusunda, bir e-posta gövdesi içeriğinin parçası olarak göndermeniz gereken hücre aralığını seçin ve ardından OK. Ekran görüntüsüne bakın:
Ardından 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:
4.1.2 Bir aralığı Excel'den ek olarak e-postayla gönderme
Bir çalışma sayfasındaki bir dizi hücreyi Excel'den ek olarak e-postayla göndermeniz gerekiyorsa. Aşağıdaki VBA kodunu deneyebilirsiniz.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar.
2. Açılışta Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Ekle > modül. Ardından aşağıdaki VBA kodunu yapıştırın. Modül (Kod) pencere.
VBA kodu: Bir aralığı Excel'den ek olarak e-postayla gönderin
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 = ""
.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:
3. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Açılan içinde Kutools for Excel iletişim kutusunda, bir e-postada ek olarak göndermeniz gereken hücre aralığını seçin ve ardından OK. Ekran görüntüsüne bakın:
Ardından otomatik olarak bir Outlook e-postası oluşturulacaktır. Ve çalışma sayfasında seçtiğiniz hücre aralığı bir Excel çalışma kitabı olarak kaydedilir ve Mesaj penceresine eklenir. Ekran görüntüsüne bakın:
4.2 Excel'de bir düğmeye tıklandığında e-posta gönder
Örneğin, Excel'den bir e-posta göndermek üzere bir makroyu tetiklemek üzere bir komut düğmesine tıklamanız gerekiyorsa, çalışma sayfasındaki bir komut düğmesini tıklatarak geçerli çalışma kitabını ek olarak başkalarına gönderin. Bunu yapmak için aşağıdaki adımları takip edebilirsiniz.
1. tık Geliştirici > Ekle > Komut Düğmesi (ActiveX Kontrolü). Ardından çalışma sayfasına bir komut düğmesi çizin.
İpuçları: Zaten bir komut düğmeniz varsa, bu adımı atlayın.
2. Tuşuna basın. Ara Toplam + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere. Pencerede tıklayın Ekle > Modu, ardından VBA kodunu (geçerli çalışma kitabını Excel'den ek olarak e-postayla göndermek için kullanılan kod) Modül (Kod) penceresine yapıştırın.
Kodu almak için buraya tıklayın.
not: Adım 2'de oluşturduğunuz makronun adı buradadır. GönderÇalışma Kitabı.
3. Tuşuna basın. Ara Toplam + Q kapatmak için anahtarlar Uygulamalar için Microsoft Visual Basic pencere.
4. Şimdi makroyu komut düğmesine atamanız gerekiyor. Komut düğmesine sağ tıklayın, seçin Kodu Görüntüle sağ tıklama menüsünden.
5. Sonra Uygulamalar için Microsoft Visual Basic penceresi açılır, aşağıdaki iki satırın listelendiğini görebilirsiniz. Sayfa (Kod) pencere.
Private Sub CommandButton1_Click()
End Sub
6. Komut düğmesinin alt prosedürüne mevcut makronun adını girin.
7. Tuşuna basın. Ara Toplam + Q kapatmak için anahtarlar Visual Basic DüzenleyicisiVe tıklama Geliştirici > Tasarım Modu Tasarım modunu kapatmak için
Artık mevcut çalışma kitabını e-postada ek olarak içeren bir e-posta göndermek için komut düğmesini tıklayabilirsiniz.
4.3 Belirli bir e-posta hesabından e-posta gönder
Normalde, Excel'den VBA koduyla bir e-posta başlatırken, gönderenin e-posta hesabı Outlook'ta varsayılan hesaptır. Outlook'unuzda birkaç e-posta hesabı yapılandırdığınızı ve e-postaları varsayılan hesap yerine Excel'den göndermek için belirli bir hesabı kullanmak istediğinizi varsayalım. Aşağıdaki VBA kodu yardımcı olabilir.
Bu durumda aşağıdaki kodlar gereklidir.
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("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Yukarıdaki VBA kodu nasıl kullanılır?
Bu örnekte, mevcut çalışma kitabını Excel'den ek olarak göndermek için belirli bir e-posta hesabı belirleyeceğiz. Lütfen aşağıdaki gibi yapın.
1. Tuşuna basın. Ara Toplam + F11 anahtarlar. İçinde Uygulamalar için Microsoft Visual Basic Pencere, tıklayın Tools > Referanslar. Ve sonra kontrol edin Microsoft Outlook 16.0 Nesne Kitaplığı kutu ve tıklayın OK içinde Referanslar - VBAProject iletişim kutusu.
2. tık Ekle > modül. Ardından aşağıdaki VBA kodunu yapıştırın. Modül (Kod) pencere.
VBA kodu: Geçerli çalışma kitabını belirli bir Outlook hesabı aracılığıyla Excel'den bir e-posta eki olarak gönderin
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("") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = ""
.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. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Ardından bir Outlook e-posta mesajı açılır, Konum alan, kodda belirttiğiniz e-posta hesabıyla doldurulur.
4.4 Bir tarihe ulaşıldığında bir e-posta gönderin
Örneğin aşağıdaki ekran görüntüsünde gösterildiği gibi belirli bir son tarihe göre bir e-posta göndermeniz gerekiyorsa, bir proje tablosu var, E2:E7 aralığındaki vade tarihi bugünden itibaren 7 güne eşit veya bundan daha az olduğunda (geçerli tarihin 2022/8/4 olduğu varsayılarak), ilgili proje liderlerine otomatik olarak bir e-posta gönderilecek ve projenin süresinin dolmak üzere olduğunu bildirecektir.
1. Çalışma sayfasında proje tablosu bulunur, sayfa sekmesine sağ tıklayın ve Kodu görüntüle sağ tıklama menüsünden.
2. Açılışta Uygulamalar için Microsoft Visual Basic penceresinde aşağıdaki VBA kodunu yapıştırın. Sayfa (Kod) pencere.
VBA kodu: Bir son tarih karşılandığında otomatik olarak bir e-posta gönderin
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,
3. Tuşuna basın. F5 kodu çalıştırmak için anahtar. Ardından, son kullanma tarihi koşullarla eşleşirse ilgili e-posta oluşturulur. Bu durumda, aşağıdaki ekran görüntüsünde gösterildiği gibi iki e-posta oluşturulacaktır.
5. Excel'den kolayca e-posta göndermenize yardımcı olacak kullanışlı bir araç
Bir VBA acemi iseniz, yukarıdaki yöntemler sizin için kolay olmayabilir. Burada tavsiye ediyoruz Kutools for Excel'S Mailleri gönder özelliği, bu özellik sayesinde yalnızca birkaç tıklama ile Excel'den kolayca e-posta gönderebilirsiniz. Lütfen aşağıdaki gibi yapın.
Başvurmadan önce Kutools for ExcelLütfen önce indirin ve kurun.
5.1 İhtiyacınız olan e-posta alanlarını içeren bir posta listesini kolayca oluşturun
E-posta Gönder ö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. tık Kutools Artı > Posta Listesi Oluşturun.
2. Açılışta Posta Listesi Oluşturun penceresinde aşağıdaki gibi yapılandırmanız gerekir.
Daha sonra aşağıdaki ekran görüntüsünde gösterildiği gibi örnek bir mail listesi tablosu oluşturulur.
3. Şimdi örnekteki orijinal verileri kendi saha verilerinizle değiştirmeniz gerekiyor.
Artık bir posta listesi tablosu oluşturdunuz. Lütfen uygulamak için devam edin Mailleri gönder Oluşturduğunuz alanlara göre Excel'den e-posta gönderme özelliği.
Bu yardımcı programın ücretsiz denemesine (30 günlük) sahip olmak istiyorsanız, indirmek için lütfen tıklayınızve ardından yukarıdaki adımlara göre işlemi uygulamaya gidin.
5.2 Posta listesinde oluşturduğunuz alanlar da dahil olmak üzere e-postaları kolayca gönderin
Posta listesini oluşturduktan sonra (nasıl olduğunu öğrenmek için tıklayın) e-postalarınızda ihtiyaç duyabileceğiniz alanları içeriyor, artık bu alanlar ile Excel'den e-posta gönderebilirsiniz.
1. Tüm posta listesini seçin, Kutools Artı > Mailleri gönder.
2. içinde Mailleri gönder iletişim kutusunda, lütfen aşağıdaki yapılandırmayı yapın.
3. Sonra a Kutools for Excel kaç e-posta gönderildiğini söylemek için iletişim kutusu açılır, OK Bu iletişim kutusunu kapatmak için düğmesine basın.
İpuçları: Şuraya gidebilirsiniz Eşya gönder Gönderdiğiniz e-postaları kontrol etmek için Outlook'unuzdaki klasör.
5.3 HTML gövdesiyle (köprü, resim vb. dahil) e-postaları kolayca gönderin.
Bu E-posta Gönder özelliği, köprü, resim, farklı yazı tipi boyutları ve yazı tipi renkleri vb. içeren bir html e-postası oluşturmanıza olanak tanır.
Sonra ihtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturma,
Ne zaman E-posta Gönder iletişim kutusunu yapılandırın, 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ıyla e-posta göndermenize yardımcı olacak bir VBA kodu gösterdik. Burada E-posta Gönder özelliği ile bir seçeneği işaretlemeniz yeterlidir, ardından Excel'den gönderdiğiniz e-postalara Outlook varsayılan imzası eklenecektir.
Sonra ihtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturma,
Ne zaman E-posta Gönder iletişim kutusunu yapılandırın, tıklaman gerekiyor Opsiyonlar > Outlook'un imza ayarlarını kullanın.
not: Lütfen Outlook'un imza ayarlarını kullan seçeneğinden önce bir onay işaretinin görüntülendiğinden emin olun.
Alıcılar e-postayı aldıklarında, e-posta gövdesinin sonunda görüntülenen Outlook varsayılan imzasını görebilirler.
5.5 Belirli bir e-posta hesabından kolayca e-posta gönderin
E-postaları Excel'den göndermek için varsayılan hesabı kullanmak yerine belirli bir e-posta hesabını kullanmak için, E-posta Gönder özelliği de bunun kolayca yapılmasına yardımcı olabilir.
Sonra ihtiyacınız olan e-posta alanlarını içeren bir posta listesi oluşturma,
Ne zaman E-posta Gönder iletişim kutusunu yapılandırın, tıklaman gerekiyor Opsiyonlar > Den gönderildi, ardından e-posta göndermeniz gereken e-posta hesabını tıklayın.
not: E-posta hesabını seçtikten sonra, önünde bir onay işareti görüntülenecektir.
Tıkla okuyun Bu E-posta Gönder özelliği hakkında daha fazla bilgi için.
Bu yardımcı programın ücretsiz denemesine (30 günlük) sahip olmak istiyorsanız, indirmek için lütfen tıklayınızve ardından yukarıdaki adımlara göre işlemi uygulamaya gidin.
Sonuç olarak, günlük işlerimizde Excel'den e-posta göndermek oldukça faydalıdır. Bu makale, Excel'den gönderilen e-postaların daha kapsamlı konularını kapsar, başka konular veya daha kolay çözümler varsa, lütfen bana bildirmek için bir yorum bırakın.
En İyi Ofis Üretkenlik Araçları
Kutools for Excel ile Excel Becerilerinizi Güçlendirin ve Daha Önce Hiç Olmadığı Gibi Verimliliği Deneyimleyin. Kutools for Excel, Üretkenliği Artırmak ve Zamandan Tasarruf Etmek için 300'den Fazla Gelişmiş Özellik Sunar. En Çok İhtiyacınız Olan Özelliği Almak İçin Buraya Tıklayın...
Office Tab, Office'e Sekmeli Arayüz Getirir ve İşinizi Çok Daha Kolay Hale Getirir
- Word, Excel, PowerPoint'te sekmeli düzenlemeyi ve okumayı etkinleştirin, Publisher, Access, Visio ve Project.
- Yeni pencereler yerine aynı pencerenin yeni sekmelerinde birden çok belge açın ve oluşturun.
- Üretkenliğinizi% 50 artırır ve her gün sizin için yüzlerce fare tıklamasını azaltır!