Note: The other languages of the website are Google-translated. Back to English

Excel'deki hücre değerine göre otomatik olarak e-posta nasıl gönderilir?

Excel'de belirli bir hücre değerine göre Outlook aracılığıyla belirli bir alıcıya bir e-posta göndermek istediğinizi varsayarsak. Örneğin, bir çalışma sayfasındaki D7 hücresinin değeri 200'den büyük olduğunda, otomatik olarak bir e-posta oluşturulur. Bu makale, bu sorunu hızlı bir şekilde çözmeniz için bir VBA yöntemi sunar.

VBA kodu ile hücre değerine göre otomatik olarak e-posta gönderin


VBA kodu ile hücre değerine göre otomatik olarak e-posta gönderin

Excel'deki hücre değerine göre bir e-posta göndermek için lütfen aşağıdaki işlemleri yapın.

1. Çalışma sayfasında, hücre değerine göre e-posta göndermeniz gerekir (burada D7 hücresi yazmaktadır), sayfa sekmesine sağ tıklayın ve Kodu Görüntüle bağlam menüsünden. Ekran görüntüsüne bakın:

2. Açılırken Uygulamalar için Microsoft Visual Basic penceresi, lütfen aşağıdaki VBA kodunu kopyalayıp sayfa kodu penceresine yapıştırın.

VBA kodu: Excel'deki hücre değerine göre Outlook üzerinden e-posta gönderin

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 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 there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

notlar:

1). VBA kodunda, D7 ve değer> 200 e-postayı temel alarak göndereceğiniz hücre ve hücre değeridir.
2). Lütfen ihtiyacınız olan e-posta gövdesini değiştirin xMailBody koddaki satır.
3). E-posta Adresini satırdaki alıcı e-posta adresiyle değiştirin .To = "E-posta Adresi".
4). Ve Cc ve Bcc alıcılarını istediğiniz gibi belirtin. .CC = "" ve Bcc = "" bölümleri.
5). Sonunda e-posta konusunu satırda değiştirin .Subject = "hücre değeri testi ile gönder".

3. Tuşuna basın. Ara Toplam + Q kapatmak için anahtarları birlikte Uygulamalar için Microsoft Visual Basic pencere.

Şu andan itibaren, D7 hücresine girdiğiniz değer 200'den büyük olduğunda, belirtilen alıcılara ve gövdeye sahip bir e-posta Outlook'ta otomatik olarak oluşturulacaktır. Tıklayabilirsiniz Gönder Bu e-postayı göndermek için düğmesine basın. Ekran görüntüsüne bakın:

notlar:

1. VBA kodu yalnızca Outlook'u e-posta programınız olarak kullandığınızda çalışır.

2. D7 hücresine girilen veriler bir metin değeriyse, e-posta penceresi de dışarı çıkar.


Excel'de oluşturulan posta listesinin alanlarına göre Outlook aracılığıyla kolayca e-posta gönderin:

The Mailleri gönder yarar Kutools for Excel Excel'de oluşturulan posta listesine dayalı olarak kullanıcıların Outlook aracılığıyla e-posta göndermesine yardımcı olur.
Hemen indirin ve deneyin! (30 günlük ücretsiz iz)


İlgili yazılar:


En İyi Ofis Üretkenliği Araçları

Kutools for Excel Sorunlarınızın Çoğunu Çözer ve Verimliliğinizi% 80 Artırır

  • Yeniden: Hızlıca yerleştirin karmaşık formüller, grafikler ve daha önce kullandığınız her şey; Hücreleri Şifrele şifre ile; Posta Listesi Oluşturun ve e-posta gönder ...
  • Süper Formül Çubuğu (birden çok metin ve formül satırını kolayca düzenleyin); Okuma Düzeni (çok sayıda hücreyi kolayca okuyun ve düzenleyin); Filtrelenmiş Aralığa Yapıştır...
  • Hücreleri / Satırları / Sütunları Birleştirme Veri kaybetmeden; Bölünmüş Hücre İçeriği; Yinelenen Satırları / Sütunları Birleştirme... Yinelenen Hücreleri Önleyin; Aralıkları Karşılaştır...
  • Yinelenen veya Benzersiz'i seçin Satırlar; Boş Satırları Seçin (tüm hücreler boştur); Süper Bul ve Bulanık Bul Birçok Çalışma Kitabında; Rastgele Seçim ...
  • Tam kopya Formül referansını değiştirmeden Birden Çok Hücre; Otomatik Referans Oluştur Birden Çok Sayfaya; Madde İşaretleri Ekle, Onay Kutuları ve daha fazlası ...
  • Metni Çıkar, Metin Ekle, Konuma Göre Kaldır, Alanı Kaldır; Sayfalama Alt Toplamları Oluşturma ve Yazdırma; Hücre İçeriği ve Yorumları Arasında Dönüştür...
  • Süper Filtre (filtre şemalarını kaydedin ve diğer sayfalara uygulayın); Gelişmiş Sıralama ay / hafta / gün, sıklık ve daha fazlasına göre; Özel Filtre kalın, italik ...
  • Çalışma Kitaplarını ve Çalışma Sayfalarını Birleştirin; Tabloları anahtar sütunlara göre birleştirin; Verileri Birden Çok Sayfaya Bölme; Toplu dönüştürme xls, xlsx ve PDF...
  • 300'den fazla güçlü özellik. Office / Excel 2007-2019 ve 365'i destekler. Tüm dilleri destekler. Kuruluşunuzda veya kuruluşunuzda kolay dağıtım. Tam özellikli 30 günlük ücretsiz deneme. 60 günlük para iade garantisi.
kte sekmesi 201905

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!
ofis tabanı
Yorumları sıralama ölçütü
Yorumlar (290)
Henüz derecelendirme yok. İlk değerlendiren siz olun!
Bu yorum sitedeki moderatör tarafından en aza indirildi
Tüm hücre aralığına uygulamak için kod nasıl değiştirilmelidir?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Debbie,
Lütfen sorunu çözmek için aşağıdaki VBA kodunu deneyin.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
Eğer (Kesişim Değil(Hedef, Aralık("A1:D4")) Hiçbir Şey Değilse) Ve (Target.Value > 200) O zaman
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xOutMail ile
.To = "Alıcınızın e-posta adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hücredeki değerin dolaylı olarak değişip değişmediğini sormak için bu kodu almakta sorun yaşıyorum. Örneğin, bu değeri otomatik olarak değiştiren Sum denklemim varsa. Denklem çalıştığında ve değer, e-postayı istemek için ayarlanan değerin üzerine çıktığında, numarayı kendim fiziksel olarak değiştirmedikçe bunu yapmaz. Dolaylı olarak değiştirilse bile e-posta istemini yapmanın bir yolu var mı?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Ürdün,
Aşağıdaki VBA kodu, sorunu çözmenize yardımcı olabilir. Lütfen "E-posta Adresini" koddaki alıcının e-posta adresiyle değiştirmeyi unutmayın. Teşekkür ederim.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Dim xRgPre As Aralık
On Error Resume Next
Target.Cells.Count > 1 ise Sub Exit
XRg = Aralık ("D7") ayarla
xRgPre = xRg olarak ayarlayın.Öncelikler
xRg.Value > 200 ise
Eğer Target.Address = xRg.Address ise
Mail_small_Text_Outlook'u arayın
ElseIf (xRgPre Değildir Hiçbir Şey Değil) Ve (Kesişim(Target, xRgPre).Adres = Hedef.Adres) Sonra
Mail_small_Text_Outlook'u arayın
Eğer son
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xOutMail ile
.To = "E-posta Adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Uygulamam için çalışmasını sağlamak için önerilen kodu değiştirdim.
xRg = Aralık ("C2:C40") değiştirildi ve xRg.Value = -1 ise.

Karşılaştığım sorun, herhangi bir hücrede bir değişiklik olduğunda ve aralığımdaki hücrelerden biri = -1 olduğu sürece Mail_small_Text_Outlook'u arayacaktır.
Yalnızca aralığımdaki herhangi bir hücre dolaylı olarak -1 olarak değiştirilirse aramaya çalışıyorum.
Ayrıca iki kriteri karşılamasının mümkün olup olmadığını ve nasıl mümkün olacağını merak ediyordum.
A aralığını ve B aralığını kontrol edin ve kriterlerin çağrı işlevini karşılayıp karşılamadıklarını kontrol edin.

Yardım için şimdiden teşekkürler. Tüm bunlar için yeniyim ama bu konuyu okumak bana yaklaşık% 90 oranında orada.


Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Dim xRgPre As Aralık
On Error Resume Next
Target.Cells.Count > 1 ise Sub Exit
xRg = Aralık ("C2:C40") olarak ayarla
xRgPre = xRg olarak ayarlayın.Öncelikler
xRg.Value = -1 ise
Eğer Target.Address = xRg.Address ise
Mail_small_Text_Outlook'u arayın
ElseIf (xRgPre Değildir Hiçbir Şey Değil) Ve (Kesişim(Target, xRgPre).Adres = Hedef.Adres) Sonra
Mail_small_Text_Outlook'u arayın
Eğer son
Eğer son
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu kodu, tüm sütuna [Set xRg = Range("D4:D13")] uyguladığım tek değişiklikle kullandım. Artık olay, D Sütunundaki valfin hedef değerin altında olup olmadığına bakılmaksızın bir hesaplama yapıldığında tetiklenir. Neden olduğu hakkında bir fikriniz var mı?


Aralık Olarak Dim Xrg
Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Dim xRgPre As Aralık
On Error Resume Next
Target.Cells.Count > 1 ise Sub Exit
Xrg = Aralık ("D4:D13") olarak ayarla
xRgPre = Xrg.Öncekileri Ayarla
Xrg.Value < 1200 ise
Eğer Target.Address = Xrg.Address ise
Mail_small_Text_Outlook'u arayın
ElseIf (xRgPre Değildir Hiçbir Şey Değil) Ve (Kesişim(Target, xRgPre).Adres = Hedef.Adres) Sonra
Mail_small_Text_Outlook'u arayın
Eğer son
Eğer son
End Sub

Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & _
"test vba" _
& vbNewLine & _
"Hat 2."
On Error Resume Next
xOutMail ile
.To = ""
.CC = ""
.BCC = ""
.Subject = "Otomatik E-posta Testi"
.Body = xMailBody
.Görüntüle
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey

End Sub


Teşekkürler.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba

E-posta alıcısının tekrar tekrar eklenmesi gerektiğinden sorun yaşıyorum. Lütfen bu işleve e-posta alıcılarının listesi eklenip eklenemeyeceğine rehberlik edin, böylece işlev sağlanan e-posta adresleri listesinden e-posta adresini seçer veya listeyi yükler ve işlev önceden oluşturulmuş e-postayı istenen alıcıya gönderir.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Henry,
Aşağıdaki VBA kodu, sorunu çözmenize yardımcı olabilir. Lütfen VBA komut dosyasını çalışma sayfası modülünüze yerleştirin. Belirtilen hücredeki değer koşulu karşıladığında, bir Kutools for Excel iletişim kutusu açılır, lütfen alıcıların e-posta adreslerini içeren hücreleri seçin ve ardından OK düğmesini tıklayın. Ardından, belirtilen alıcılara sahip e-postalar açılıyor. Lütfen onları ihtiyacınız olduğu gibi gönderin.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
XRg = Aralık ("D7") ayarla
xRg = Target Ve Target.Value > 200 ise
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
Aralık olarak Dim xRgMsg
Aralık olarak xCell Dim
Set xRgMsg = Application.InputBox("Lütfen adres hücrelerini seçin:", "Kutools for Excel", , , , , , 8)
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xRgMsg'deki Her xCell için
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xOutMail ile
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
xOutApp = Hiçbir şey
xOutMail = Hiçbir şey
Sonraki
Hata Dönüsünde 0
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
herhangi bir manuel kesinti olmadan otomatik olarak postayla mı gönderilecek?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Brahma,
E-postayı görüntülemeden doğrudan göndermek istiyorsanız, lütfen yukarıdaki VBA kodunda ".Display" satırını ".Send" ile değiştirin.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba aynı scripti koydum ama çalışmıyor lütfen 1. kısımda bana yardım edin

Aralık olarak Dim xRg

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
XRg = Aralık ("D7") ayarla
xRg = Target Ve Target.Value = 200 ise
Mail_small_Text_Outlook'u arayın
Eğer son

End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
sevgili fesleğen,
Kodu çalıştırırken herhangi bir uyarı var mı?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba, bir hücre grubunun "Eşleşme yok" dizesine sahip olup olmadığını kontrol etmek ve varsa bir e-posta göndermek için bu kodu nasıl değiştirirsiniz?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Jose,
Lütfen VBA kodunun altında deneyin. Kodu çalıştırırken, bir iletişim kutusu açılır, lütfen dize için kontrol edeceğiniz aralığı seçin ve Tamam düğmesine tıklayın. dize yoksa, bir istem iletişim kutusu alırsınız. Dize aralıkta mevcutsa, belirtilen alıcı, konu ve gövdeye sahip bir e-posta görüntülenecektir.

Alt SendEmail()
Dim kadar uzun
Dim J As Long
Aralık olarak Dim xRg
xArr'ı karart
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
Boolean Olarak x İşaretini Karart
On Error Resume Next
Set xRg = Application.InputBox("Lütfen aralığı seçin", "Kutools for Excel", Selection.Address, , , , , 8)
xRg Hiçbir Şey Değilse, Sub'dan Çıkın
xArr = xRg.Value
xFlag = Yanlış
I = 1 için UBound(xArr) için
J = 1 için UBound(xArr, 2) için
xArr(I, J) = "Eşleşme Yok" ise
xFlag = Doğru
Eğer son
Sonraki
Sonraki
Eğer xFlag ise
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
xOutMail ile
.To = "E-posta adresi"
.CC = ""
.BCC = ""
.Subject = "Eşleşme"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
başka
MsgBox "Eşleşen değer bulunamadı", vbInformation, "KuTools for Excel"
Eğer son
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Öğrenci notlarını velilere göndermek için bu kodu nasıl değiştirebilirim. A sütununun not ve B Sütununun ana e-posta olduğu durumlarda. Not olarak F alan her öğrenci için bir e-posta doldurmak istiyorum.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Frank,
Aşağıdaki VBA kodu, sorunu çözmenize yardımcı olabilir. Teşekkür ederim.

Alt Mail_small_Text_Outlook()
Aralık olarak Dim xRg
Dim kadar uzun
xRows As Long
Dize Olarak Dim xVal
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
On Error Resume Next
Set xRg = Application.InputBox("Lütfen not sütununu ve e-posta sütununu seçin (iki sütun)", "Kutools for Excel", Selection.Address, , , , , 8)
xRg Hiçbir Şey Değilse, Sub'dan Çıkın
xRows = xRg.Rows.Count
xRg = xRg(2) olarak ayarla
I = 1 ila xRows için
xVal = xRg.Offset(I, -1).Metin
xVal = "F" ise
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu çocuğunuzun notu" & xRg.Offset(I, -1).Text
xOutMail ile
.to = xRg.Offset(I, 0).Metin
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
Eğer son
Sonraki
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Zaten bir excel dosyasında e-posta adreslerinin bir listesi var, D7 hücresi >200 ise, kişinin e-posta adresini otomatik olarak seçmek için kodu nasıl değiştirebilirim?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Good Day,
Aşağıdaki VBA kodu, sorunu çözmenize yardımcı olabilir. Lütfen VBA komut dosyasını çalışma sayfası modülünüze yerleştirin. Belirtilen hücredeki değer koşulu karşıladığında, bir Kutools for Excel iletişim kutusu açılır, lütfen alıcıların e-posta adreslerini içeren hücreleri seçin ve ardından OK düğmesini tıklayın. Ardından, belirtilen alıcılara sahip e-postalar açılıyor. Lütfen onları ihtiyacınız olduğu gibi gönderin.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
XRg = Aralık ("D7") ayarla
xRg = Target Ve Target.Value > 200 ise
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
Aralık olarak Dim xRgMsg
Aralık olarak xCell Dim
Set xRgMsg = Application.InputBox("Lütfen adres hücrelerini seçin:", "Kutools for Excel", , , , , , 8)
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xRgMsg'deki Her xCell için
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xOutMail ile
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
xOutApp = Hiçbir şey
xOutMail = Hiçbir şey
Sonraki
Hata Dönüsünde 0
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Outlook üzerinden posta gönderirken sorun yaşıyorum. "Bir program sizin adınıza bir e-posta göndermeye çalışıyor. Beklenmedik bir durumsa, lütfen reddedin ve virüsten koruma yazılımınızın güncel olduğunu doğrulayın" hatasını alıyorum.
Otomatikleştiremediğim için lütfen yardım edin.
Bu yorum sitedeki moderatör tarafından en aza indirildi
özür dilerim mayak,
Kod benim durumumda iyi çalışıyor. Outlook'unuzda "adına gönder" işleviyle ilgili bir şey yapılandırılmış gibi görünüyor. Lütfen kontrol edin.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba, miktarı ayda bir kez > 200 olan (örneğinize göre) veya yakında sona erecek (tarihlere göre) meyvelerin listesini içeren bir yöneticiye e-posta göndermeye çalışırsam hangi kodu kullanırdım?
Bu yorum sitedeki moderatör tarafından en aza indirildi
İyi gün
Bu makaledeki yöntem olabilir "Excel'de son tarih karşılandıysa e-posta nasıl gönderilir?" size yardımcı olabilir.
Lütfen şu bağlantıyı takip edin: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hücredeki bir tarihe göre bir e-posta göndermek için kodu nasıl düzenleyebilirim. Örneğin, her 15 ayda bir gözden geçirilen bir belgeye ihtiyacım var ve 12 ayda bir belgenin incelenmesi gerektiğini söyleyen bir e-posta adresine bir e-posta göndermek istiyorum. Şimdi .Display'i .Send olarak değiştirerek otomatik olarak bir e-posta göndermeye sahibim ve yazıldığı gibi harika çalışıyor, ancak tam sayı yerine tarih işlevini kullanmak için neyi değiştirmem gerekiyor?
Bu yorum sitedeki moderatör tarafından en aza indirildi
"XRg = Aralık Ayarla("D7")" öğesine Çoklu Aralık nasıl ekleyebilirsiniz. Düzenlemek ve Aralık ("D7:F7") eklemek istiyorum. Ancak Run Time Error 13, Type Mismatch hatası alıyorum ve bu beni If xRg = Target And Target.Value > 2 Then'e götürüyor.


Bu sorunu nasıl çözebilirim?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Good Day,
Lütfen sorunu çözmek için aşağıdaki VBA kodunu deneyin.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
Eğer (Kesişim Değil(Hedef, Aralık("D7:F7")) Hiçbir Şey Değilse) Ve (Target.Value > 200) O zaman
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xOutMail ile
.To = "Alıcınızın e-posta adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
mükemmel çalıştı .. Teşekkürler .. :) :)
Bu yorum sitedeki moderatör tarafından en aza indirildi
D7'deki değer bir formülün sonucu olduğu için benim için çalışmıyor. Ya D7 hücresi bir formül içeriyorsa, örneğin D7 =2*120? Hala koşulu karşılıyor ama hiçbir şey olmuyor. Lütfen yardım et
Bu yorum sitedeki moderatör tarafından en aza indirildi
kodun çalışması nasıl durdurulur, yani koşul karşılanmadığında e-postayı istemez mi?

D7 < 200 olduğunda bile, yine de e-posta isteniyor.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Good Day,
Kod, sorun çözülerek gönderide güncellenir. Yorumun için teşekkür ederim.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Hi

Bu VBA Kodunu ve talimatları gönderdiğiniz için çok teşekkür ederiz. Onu bulduğumda lotoyu kazanmış gibi hissettim. Ancak bir şeye takıldım, bu yüzden yardım edebileceğinizi umuyorum (VBA'da yeniyim, yalnızca çok temel bir anlayışa sahibim).

Kodu kopyaladım ve bir ölçüt karşılanırsa bir aralıktan seçmek için hücre ve hücre değerini değiştirdim. Denedim ve test ettim ve işe yarıyor ve kriterlere göre görünüm için bir e-posta aldım.

1) Ancak, excel çalışma sayfasını açtığımda VBA uygulamasını tıklayıp çalıştırmayı seçmek yerine VBA kodunun otomatik olarak çalışmasını nasıl sağlayacağımı anlayamıyorum. Bunu yapacak yukarıdaki VBA kodunu yazmak için ek bir istem olup olmadığını veya ayrı olarak yapılması gerekip gerekmediğini söyleyebilir misiniz?

2) Ayrıca, aşağıdaki örnekte gösterildiği gibi belirli bir öğe için son tarih evet ise, bir kişiye posta göndermek için VBA kodunu almanın bir yolu var mı?
e-posta gizli sütunu
İsim-Soyisim

Prosedür
Prosedür no.1 son tarih evet
Prosedür numarası 2 son tarih hayır

E-tabloda çok sayıda kişi olurdu (üst üste yatay olarak geçer) ve çeşitli gecikmiş prosedürler için 'Evet' vurgulanabilir (A sütununda dikey olarak listelenmiştir. Bunun gibi bir şey için çalışan bir VBA kodu oluşturmanın bir yolu var mı - Eğer 'Kişi 1' için 'Evet' ise, 'kişi 1'e 'prosedür no #' (veya numaralar) ve son tarih(ler) ile e-posta gönderin.E-postada tüm prosedürleri ve müteakip son tarihlerini listeleyebilme.

O kişi için gecikmiş tüm belgeleri ve son tarihlerini bir postayla gönderdiği sürece, her kişi için ayrı bir VBA kodu ayarlamak zorunda kalmam sorun olmaz.

Umarım yardım edebilirsin
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Ann,
Lütfen aşağıdaki VBA kodunu deneyin. Yorumun için teşekkür ederim.

Alt Mail_small_Text_Outlook()
Aralık olarak Dim xRg
Aralık olarak xCell Dim
Dim kadar uzun
xRows As Long
Dim xCols As Long
Dize Olarak Dim xVal
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
On Error Resume Next
Set xRg = Application.InputBox("E-postaları göndereceğiniz hücre değerini içeren aralığı seçin:", "Kutools for Excel", Selection.Address, , , , , , 8)
xRg Hiçbir Şey Değilse, Sub'dan Çıkın
xRows = xRg.Rows.Count
xCols = xRg.Columns.Count
I = 1 ila xRows için
xCell = xRg(I, xCols) ayarla
xCell.Value = "Evet" ise
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu sizin bilgileriniz: " & vbNewLine & xCell.Offset(0, -1).Text & vbNewLine & xCell.Offset(0, -2).Text
xOutMail ile
.To = xCell.Offset(0, -4).Text
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
Eğer son
Sonraki
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Kristal,

Bu, aşağıdaki kodu değiştirir:

Alt e-posta()

Aralık olarak Dim xRg

Dim xRgEach As Aralık

xEmail_Subject, xEmail_Send_Form,;vb.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu kodu tam olarak nereye ekleyeceğiz?
Bu yorum sitedeki moderatör tarafından en aza indirildi
İyi günler,
Kodu, çalışma sayfasının kod penceresine yerleştirmeniz gerekir.
Uygulamalar için Microsoft Visual Basic penceresini açın, kod düzenleyiciyi açmak için sol bölmedeki sayfa adına çift tıklayın.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba,


Şu anda kodlama konusunda biraz sorun yaşıyorum (bu konuda yeni - çiğneyebileceğimden daha fazlasını ısırmış olabilir)


Şu anda, işletmemiz için mülklerimizde bulunan arızaları otomatikleştirmek ve e-posta göndermek için yardıma ihtiyacım olan aşağıdakileri içeren bir elektronik tablom var


Şu anda aşağıdaki verileri kullanacak bir koda ihtiyacım var:


1) Bir adres ve sorun ( ((D2 hücresinde) aracılığıyla birleştirilmiş 1 "genel" hücre) " = =BAĞLANTI(B1," "C1)"
B1'deki adres her zaman aynı olacaktır (az ya da çok)
C1 ise mülkteki arızaya bağlı olarak her zaman değişecektir.


2) Aynı e-posta adresine gönderilecek bir e-posta, (örneğin $E$1 kullanabilir miyim veya E1 - E1 kullanmam gerekir mi?) veya sadece kod satırına " TheEmailAdress@.co.uk" yazabilir miyim?


3) E-posta gövdesi, 1. maddeye benzer şekilde doldurulacak ...... ((F1 hücresinde)) " =BAĞLANTI(G1," ",H1)
Bunlar şirketi temsil ettikleri için (G1) ve yaptıkları, sabitleme, alıntılama vb (H1) olduğu için sürekli değişecektir.

4) E-postayı gönderme tetikleyicisi, ben 7 numara olurdum, sayfa günlük olarak güncellenir (haftada 7 gün)
bu nedenle, e-postayı 7. günde göndermek için tetikleyiciye ihtiyacım var, ancak 8, 9, 10+ vb. günlerdeki gibi sürekli değil. ve 1-6'dan önce değil, bu A4'te olurdu: A 100+ (sürekli genişlediğimiz için


4) E-postayı göndermek için tetikleyici için bir liste kullanmaktan bahseden diğer kullanıcılardan küçük parçacıklar kullandım, ancak bunun %100 doğru olduğundan emin değilim, ancak tüm Collum A... .A4: A100
ve yalnızca " 47 " içeren 7 hücre varsa 47 E-posta gönderilir


Okuduğunuz için çok teşekkür ederim ve umarım yardımcı olabilirsiniz :)
Bu yorum sitedeki moderatör tarafından en aza indirildi
sevgili martin,
Üzgünüm bu konuda yardımcı olamam.
Sorunuzu forumumuza gönderebilirsiniz: https://www.extendoffice.com/forum.html Teknik kadromuzdan daha fazla Excel desteği almak için.
Yorumun için teşekkür ederim.

Saygılarımla,
Kristal
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba,


E-postayı L sütununa eklenen "tamamlandı" kelimesini temel alarak göndermek istersem ne olur?
Bu yorum sitedeki moderatör tarafından en aza indirildi
Sevgili Jesse,
Aşağıdaki VBA kodu, sorunu çözmenize yardımcı olabilir. Yorumun için teşekkür ederim.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
Eğer (Kesişim Değil(Hedef, Aralık("L:L")) Hiçbir Şey Değilse) Ve (Target.Value = "tamamlandı") Sonra
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xOutMail ile
.To = "Alıcınızın e-posta adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba,
Outlook'un yalnızca Aralığa ("D7:F7") yapıştırdığım verilerde en az 1 sıfır veya boşluk olduğunda çıkmasını istiyorum.
'If Target.Cells.Count > 1 Then Exit Sub' satırını kaldırdım ve artık herhangi bir değer grubunu D7:F7 hücrelerine yapıştırdığımda Outlook her zaman başlatılıyor.

Yardım.
Bu yorum sitedeki moderatör tarafından en aza indirildi
sevgili Jan,
Aşağıdaki komut dosyası sorunu çözmenize yardımcı olabilir. Yorumun için teşekkür ederim.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
On Error Resume Next
Eğer Target.Address = Range("D7:F7").Adres O zaman
Application.WorksheetFunction ile
Eğer .CountIf(Target, "") > 0 Veya .CountIf(Target, 0) > 0 O zaman
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xOutMail ile
.To = "E-posta Adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = "Merhaba"
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
Eğer son
İle bitmek
Eğer son
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
Bu yüzden, düzenlemenizi bir hücre aralığı eklemek için kullandım, ancak (çalışma sayfası örneğini kullanıyorsak) meyve türünü, Tarihi ve miktarı çalışma sayfasından HTML e-postasına kriterlere uyuyorlarsa nasıl ekleyeceğimi merak ediyordum. oluşturulmuş bir e-posta var. yani diyecek

"Merhaba,"

Hücredeki meyve adı "Sipariş tarihi itibariyle geri sipariş verilmesi gerekiyor: " hücreden sipariş tarihi "bu miktar elimizde:" hücreden miktar.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba Noemi,
Lütfen bu VBA komut dosyasını deneyin.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Aralık olarak Dim xRg
Dim I, J, K As Uzun
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
On Error Resume Next
Eğer Target.Address = Aralık("D7").Adres O zaman
Application.WorksheetFunction ile
IsNumeric(Target.Value) Ve Target.Value > 200 ise
Set xRg = Application.InputBox("Lütfen posta gövdesinde görüntüleyeceğiniz hücre aralığını seçin:", "KuTools for Excel", Selection.Address, , , , , 8)
xRg Hiçbir Şey Değilse, Sub'dan Çıkın
I için = 1'den xRg.Rows.Count'a
J = 1 için xRg.Rows(I).Columns.Count
K = 1 için xRg.Rows(I).Columns(J).Count
xMailBody = xMailBody & " " & xRg.Rows(I).Columns(J).Cells(K).Text
Sonraki
Sonraki
xMailBody = xMailBody ve vbNewLine
Sonraki
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xOutMail ile
.To = "E-posta Adresi"
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = "Merhaba" & vbNewLine & xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
Hata Dönüsünde 0
xOutMail'i ayarla = Hiçbir şey
xOutApp'ı ayarla = Hiçbir şey
Eğer son
İle bitmek
Eğer son
End Sub
Bu yorum sitedeki moderatör tarafından en aza indirildi
merhaba kristal
Kodlarınız için teşekkürler, mümkünse lütfen aşağıdaki ayrıntıların kodlarını gönderin

Pasaport bitiş tarihi, ehliyet bitiş tarihi, araç ruhsat bitiş tarihi, kapı geçişi bitiş tarihi ve daha fazlası gibi farklı son kullanma tarihlerini kullanan 8-9 kolonumuz varsa ve sadece 5 kişiye mail uyarısı gönderilmelidir.

300'den fazla çalışanımız ile tarih sayfamız olduğu gibi, son kullanma tarihi ve son kullanma tarihi 15 gün içinde kırmızı renkte ve e-posta uyarısı gönderilmelidir.

lütfen gereğini yapın

şimdiden teşekkürler
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba,
Bir makale yayınladık "Excel'de son tarih karşılandıysa e-posta nasıl gönderilir?"
Cevapları olup olmadığını bu makalede görebilirsiniz. Makaleyi açmak için lütfen bu bağlantıyı takip edin: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Teşekkür ederim.
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba- Kodun içine gerçek e-posta eklentisini koymak yerine bir listeden bir e-postaya göndermek istesem bu mümkün mü? Teşekkürler
Bu yorum sitedeki moderatör tarafından en aza indirildi
Merhaba,
Lütfen aşağıdaki VBA kodunu deneyin, belirtilen hücre koşulu karşıladığında bir iletişim kutusu açılır, lütfen e-posta göndereceğiniz e-posta adresini içeren hücreyi seçin. Umarım yardımcı olabilir. Teşekkür ederim.

Özel Alt Çalışma Alanı_Değiştir (ByVal Target As Range)
Target.Cells.Count > 1 ise Sub Exit
XRg = Aralık ("D7") ayarla
xRg = Target Ve Target.Value > 200 ise
Mail_small_Text_Outlook'u arayın
Eğer son
End Sub
Alt Mail_small_Text_Outlook()
xOutApp'i Nesne Olarak Karartın
Nesne Olarak xOutMail'i Karartın
Dize olarak xMailBody'yi karart
Aralık olarak Dim xRgMsg
Aralık olarak xCell Dim
Set xRgMsg = Application.InputBox("Lütfen adres hücrelerini seçin:", "Kutools for Excel", , , , , , 8)
xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
"Bu satır 1" & vbNewLine & _
"Bu 2. satır"
On Error Resume Next
xRgMsg'deki Her xCell için
xOutApp = CreateObject("Outlook.Application") olarak ayarlayın
xOutMail = xOutApp.CreateItem(0) olarak ayarlayın
xOutMail ile
.To = xCell.Value
.CC = ""
.BCC = ""
.Subject = "hücre değeri testi ile gönder"
.Body = xMailBody
.Göster veya .Gönder'i kullanın
İle bitmek
xOutApp = Hiçbir şey
xOutMail = Hiçbir şey
Sonraki
Hata Dönüsünde 0
End Sub
Buraya henüz hiç yorum yapılmamış
Daha Çok
Lütfen yorum yazın
Misafir olarak yayınlama
×
Bu gönderiyi değerlendirin:
0   Karakterler
Önerilen Konumlar