Excel VBA ile Mail Atmak
Вставка
- Опубліковано 5 лют 2025
- Excel ile mail atmak
Excel ile mail göndermek
Excel ile elektronik posta göndermek.
Excel VBA ortamında aşağıdaki kod ile bir elektronik postayı göndermek mümkündür. Bilgisayarda Microsoft Outlook'un yüklü olması gerekir.
Gerekli Referansların eklenmesi gerekir.
Microsoft Office ya da Microsoft Outlook
Kodlama işleminde önce nesneler tanımlanır.
Ardından Outlook nesnesi metotları aracılığıyla gönderilecek mail adresine Outlook aracılığıyla mail gönderilir.
Sub mail1()
' nesnelerin tanımlanması
' bu nesnelerin kullanılması için Referansların Microsoft Outlook ya da Office eklenmesi
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "info@farukcubukcu.com"
.CC = ""
.BCC = ""
.Subject = "deneme 2"
.Body = "excel vba ile deneme 2"
' ayrıca path ile belirtilen diğer bir dosya
' .Attachments.Add ("D:\test.txt")
' .Attachments.Add Application.ActiveWorkbook.FullName
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Bir dosya eklemek için
.Attachments.Add ("D:\test.txt")
Kendi dosyasını atmak için:
.Attachments.Add Application.ActiveWorkbook.FullName
Bir alanı göndermek için bir Range nesnesi tanımlanır ve HTMLBody özelliği aracılığıyla veri alanı HTML'e çevrilir. Bunu yapmak için verilerin geçici bir dosya üzerinden HTML sayfaya çevrilmesi gerekmektedir.
Bunu internet üzerinde bulduğum kodlardan kullandım.
.HTMLBody = RangetoHTML(Rng)
RangetoHTML fonksiyonunu Sub'ın altına eklemek gerekir.
NOT: RangetoHTML fonksiyonun kodu Internet üzerinde Ron de Bruin sitesinde ve diğer kaynaklardan bulunabilir.
Faruk Çubukçu - Bilgi Teknolojileri Danışmanlık
www.farukcubukcu.com www.excelakademi.com
harikasınız hocam
Hocam elinize sağlık faydalı bir video, mause altındaki sarı noktayı ya küçültelim yada kaldıralım görmemize engel oluyor. teşekkür ederim.
mükemmel
önem düzeyleri ve okundu, iletildi bilgilerini de ayarlayabiliyor muyuz?
merhaba,
Importance özelliği ile olabilir diye biliyorum ama denemedim.
With OutMail
.To =
.Subject = "konu"
.Importance = 2
.Send
End With
Okundu bilgisi Outlook ayarlardan yapılabilir sadece diye düşünüyorum.
Merhaba, tablodaki belli bir alanı mail gönderirken kod kısmına yazmadan seçili olan kısmı, kenarlıkları ile beraber göndermemiz mümkün mü?
Merhaba, videoda alan gönderme butonu alanı kenarlıklarıyla gönderiyor.
O HTML dönüştürme kodunu ekleyip deneyebilirsiniz.
@@farukcubukcu RangetoHTML fonksiyonunu bulup denediğimde sürekli "Compile Error: ByRef argument type mismatch" hatası alıyorum. Excel 2016 kullanıyorum, sürüm desteklememe gibi bir durum olabilir mi? Kod bloklarında değişiklik yapmadan kullanmaya çalıştım.
Merhaba, 2016 da sorun olacak bir durum yok.
Mutlaka bir yazım hatası vardır. Ya da çağırma işlemi.
bana mail atın, benim dosyanı size göndereyim.
faruk@farukcubukcu.com
Hocam video için çok teşekkürler. Excel dosyamızı açmadan otomatik olarak belirli bir tarihe göre hatırlatıcı olması adına mail göndermesi yapılabilir mi? (Örneğin; Excel dosyasını açmadan bugün formülü kullanılarak termin tarihine 3 gün kaldığında makroyu çalıştır ve mail gönder gibi.)
mERHABA,
SONUÇTA BU İŞLEMİ YÖNETECEK BİR KODLAMA GEREKİR.
Bir dosya içerisinde Application.Ontime metodu ile bir zamanlama ile gün kontrol edilir ve istenen işlemler yapılabilir. Uygulama açılır ama görünmeden arka planda çalışabilir.
Bunları tabi VBA denetimi gerektirir.
ua-cam.com/video/yF9Z2a0oWwg/v-deo.html
Vba:
ua-cam.com/play/PL3dc_-B83C8B1Dn8mAdLByM8whbXKbaob.html
vba eğitim:
ua-cam.com/play/PL3dc_-B83C8Dr4YobYrfaQ0b6Tz6SQ4dt.html
VBA KİTAP
ua-cam.com/play/PL3dc_-B83C8Ar8yY_gQhYS3v5krI8lZ1E.html
@@farukcubukcu hocam çok teşekkür ederim ilginize, saygılar
.HTMLBody = RangetoHTML(Rng) sarı yanıyor. Nasıl düzeltebilirim
Merhaba, bu fonksiyon hazır bir çözüm biliyorsunuz. Onu kullanıyoruz.
NOrmalde modülün en altına eklenen bir fonksiyon.
farklı kaynaklar da bulup deneyin.
Bir de koddaki hataları bulmak için biliyorsunuz
Debug işlemi yapmak gerekir. F8 ile kodu adım adım işletin.
sayın hocam excelden pdf e çevirdiğim bir dosyayı gönder butonu ile hızlıca gönderebiliyormuyum.
Merhaba,
attach olarak olabilir.
hocam anlatımınız için teşekkür ederim. tek sayfada farklı hüsreleri nasıl seçebilirim. örneğin a6:x6 hücreleri ile a14:x14 hücreleri gibi
faruk@farukcubukcu.com mail adresim. Sormak istediklerinizi varsa az bir veri dosyası ve detaylı anlatımla gönderin. Zamanım ölçüsünde bakarım.
teşekkürler faruk bey,
cc kısmına mail atacak hesabın adresini otomatik olarak nasıl ekleyebiliriz?
Merhaba,
Sabit bir hücreden alınacaksa
.CC =Range("a1").Value
Hocam outlook'a köprü olarak formül yazabilir miyiz? Mesela en basiti =BUGÜN() gibi. Ya da bir excel dosyasının hücresini bağlayabilir miyiz?
Teşekkür ederim.
Merhaba, bilemiyorum ama outlook'ta bir mail faklı kaydet ile msg dosyası olarak kaydedilirse ona link verilebilir.
merhaba,
ben excel sayfasında bulunan her kişiye aynı mesajı ayrı maillerde göndermek istiyorum nasıl yapabilirim.
Merhaba, videoda bir kişiye atılıyor. Kodu bir blok gibi düşünüp döngü yapısı oluşturup ( for next ) sayfadaki hücrelerden alarak yapmak gerekir.
Çok sayıda kişiye topluca mail atmak ya da izinsiz mail atmak sorun olur onu affınıza sığınarak hatırlatmak isterim.
Hocam merhaba, tek mail ile 100 alıcıya excel göndermek istiyoruz diyelim ancak her alıcının sadece kendisi ile ilgili kısmı görmesini nasıl sağlayabiliriz ?
Örneğin 10 farklı birimde 10'ar kullanıcı var ve 100 kişiyi bu exceli attığımızda excele giren kullanıcının kendi birimi dışında bir alan görmemesini istiyoruz?
Merhaba, burada belirtilen bir içeriği sayfadaki bir alanı istenilen bir kişiye gönderme var.
ayrı ayrı sayfa ya da alanlarda yazılı olanları yine bir grup kodu ile ayrılmış alıcı gruplarına gönderilebilir. Bir döngü içerisinde mail atılacak ve IF yapısı ile belirtilen bir gruba ve grup için belirtilen alanı.
merhaba hocam bi program geliştirmem gerekiyor örneğin 10 müşterim var AdSoyad,Mail,Sipariş No ve her kullanıcı için özel oluşturulmuş PDF dosyasını eklemek istiyorum mümkün müdür? örneğin her bir kullanıcıya ismi otomatik değişecek şekilde , "Merhaba Ahmet Yılmaz, İlgili pdf dosyanız aşağıdadır." gibi bi mail atmak istiyorum, sonrasında otomatık olarak yine "merhaba mehmet aslan, ilgili pdf dosyanız aşağıdadır." diyip isimleri ve yollanacak pdf dosyalarını değişecek şekilde oluşturmam lazım mümkün müdür?
Merhaba,
bu dediğiniz biraz mail merge işlemine benziyor.
ua-cam.com/video/HetiyR3kpao/v-deo.html
@@farukcubukcu henüz çok yeniyim excel'e bana bu projemi yaparken yardımcı olma şansınız var mıdır hocam?
Merhaba, şu anda online ders arasındayım. Baktım mesajınıza yanıtladım. Pek zamanım yok. Ama bu gönderdiğim linkteki gibi Word ortamında yazılan bir metni Excel'den adresleri alarak gönderebilirsiniz. Bu arada PDF yapamaz, onun için başka araçlar var sanıyorum. Biraz araştırmak gerekir.
@@farukcubukcu hocam pdf yapmaktan ziyade mesaja ek alta bi pdf koyup yollayamaz mıyız? belge şeklinde bi pdf yollamam gerekiyor :(
VBA ile yapılır sorun yok. Ben normal Excel'de mail merge ile olmaz dedim.
Attach olarak istediğiniz dosyayı ekleyebilirsiniz. Bu videoda var.
Ama onları her bir müşteri için oluşturmak nasıl olacak?
Merhaba Hocam;
Mailin altına jpg olarak imza nasıl ekleyebilirim
Merhaba, yapmadım ama olabilir sanıyorum.
Videoda anlatıldığı gibi veri alanı bir HTML sayfa yapılıp maile ekleniyor.
Aynı şekilde bir klasörde duran jpg dosyası da bir html dosya içerisinde maile eklenebilir ya da Outllok programının imza klasöründe yer alan imza dosyası HTML formatında mail içerisine alınabilir.
@@farukcubukcu Çok teşekür ederim Hocam;
Bir de belirtilen zaman diliminde otomatik olarak yani ileri tarihli olarak gönderebiliyor muyuz ?
Faruk Bey anlatımınız için teşekkürler.
benim istediğim, sayfada yer alan *Değişken Bir Alanı* ve *Hücrede Belirtilmiş Değişken Konuyu* mail gövdesinde hazırlamak
ve GÖNDER butonuna benim basmamla gitmesini sağlamak.
bunu yapmam mümkün mü?
konu olan yere ilgili sayfadan veri atanabilir:
strSubject = sheets("örnek").Range("a1").value
@@farukcubukcu Arkadaş onu sormamış hocam. Send komutunu devre dışı bırakalım. Outlook ekranı tüm diğer özellikleriyle makro çalıştıktan sonra karşımıza gelsin ve biz send e basarak gönderelim diyor. Ben de aynı konuyu henüz bulamadım. Yardımcı olursanız sevinirim.
Merhaba, Application.ItemSend event (Outlook) ile olabilir bakmak gerekir. Bir event oluşturarak. En kısa zamanda bakmaya çalışırım.
Hocam merhaba
Makro ile mail gönderirken alt alta yazmayı nasıl yapacağız yani şu şekilde;
Merhaba.
(Dosya)
İyi günler.
Şeklinde hocam
Merhaba, konu kısmına (subject) mesaj yazıp dosyayı ekleyerek göndermek ise istediğiniz zaten o şekilde yapılıyor.
Yani hocam yazıyı alt satırdan devam ettirmek istiyorum
Merhaba, bir de adres mektup birleştirme (mail merge) konusu var.
istediğinizi bu şekilde yapılabilir mi
Word'de adres mektup birleştirme (posta gönderileri) seçip E-posta iletileri seçilebilir.
ua-cam.com/video/zE5JkZqH1ug/v-deo.html
Hocam bana bir mail adresi verirseniz sorumu daha net şekilde anlatabilirim. Teşekkürler
Merhaba, evet lütfen.
faruk@farukcubukcu.com
Konu, bir excel tablosundaki çok sayıda mail adresine bir dosyayı eklenti olarak ekleyip atmak mı?
ya da detaylı bir şekilde anlatıp, adım adım yapmak istediğinizi anlatırsanız. Hangi veriler kullanılacak, vs açıklarsanız iyi olur.
.