Excel hücre değişikliği mail atsın

mkaskaya

Altın Üye
Katılım
20 Ekim 2017
Mesajlar
7
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
20-03-2025
Merhaba , yapmış olduğum bir excel tablosunu paylaşıma açarak ortak kullanmak istiyorum fakat herhangi bir değişiklik yapıldığında mail atması ya da uyarı göndermesi mümkün müdür ?

Yardımlarınız için şimdiden teşekkürler.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Her değişiklikte mail atması doğru değil bence. En iyisi log tutmak. Log tutma ile ilgili örnekler forumda mevcut.
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Merhaba

Hamitcan üstadım. Log tutmak evet güzel bir işlev fakat mail atılmasının da sağlanmasını istersek ki şöyle bir kod düzeneği mevcut elimde. bu kod düzeneğinde hücrede bir değişiklik yapınca maili gönderme işlevini yerine getiriyor. Örneğin Environ("UserName") ile hangi kullanıcı ise bunu mail body ye ekletebiliyorum ama hangi shette hangi hücrede eski değer ve yeni girilen değeri mail body ye yazdırabilme durumunu yapamadım.
bilgilerinizi rica ederim

Kod:
Dim xRg As Range

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("A1:E250"), Target)
    If xRg Is Nothing Then Exit Sub
    If Target.Value > 0 Then
        Call Mail_Gonder
    End If
End Sub
Sub Mail_Gonder()
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Merhaba" & vbNewLine & vbNewLine & _
    "Aşağıda belirtilen hücrede ilgili kişi belirtilen değişikliği yapmıştır" & vbNewLine & vbNewLine & _
              Environ("UserName") & vbNewLine & _
              "İyi Çalışmalar"
    On Error Resume Next
    With xOutMail
        .To = "ulas@gmail.com"
        .CC = ""
        .BCC = ""
        .Subject = "Excel Dosyasında Hücre Değişikliği Hk."
        .Body = xMailBody
        .Send   'or use .Display
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
 

mkaskaya

Altın Üye
Katılım
20 Ekim 2017
Mesajlar
7
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
20-03-2025
Cevaplar için teşekkür ederim , Ulaş bey bu kodu nereye nasıl yazabilirim ayrıca maili hangi sunucudan nasıl gönderiyor gibi ayarlar yok mu ?
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
kullandığın pc de eğer microsoft outlook kullanıyorsan ve bu outlook üstünde exchange üstünde bir mail adresi tanımlanmışsa excel otomatik outlooka yönlendiriyor zaten. outlookta kodda yazılmış email adreslerine maili gönderiyor.
 

mkaskaya

Altın Üye
Katılım
20 Ekim 2017
Mesajlar
7
Excel Vers. ve Dili
2013 Türkçe
Altın Üyelik Bitiş Tarihi
20-03-2025
Merhaba Ulaş bey , kodu makro olarak ekledim fakat otomatik çalışmıyor mutlaka çalıştır demem ya da kısayol atayıp çalıştırmam gerekiyor , kusura bakmayın Excek hakkında ki bilgi hiç yok denecek kadar az . Teşekkürler
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
şimdi bu kod maili yukardaki başka bir duruma göre gönderiyor. o durumda A1 ile E250 hücrelerinden birisinde bir değişiklik yaparsan.
Buradaki kriteri kendi excelinde hangi hücre aralığı olması gerekiyorsa ona göre belirlemen lazım.

ve bu kodu hangi shette yani sayfa içerisinde değişiklikte çalışsın istiyorsan o sheete ait vba arayüzüne yapıştırman gerekiyor.

ama işte bu kodda asıl güzel olabilecek işlem hangi hücrede hangi veri değiştirilmiş onun yerine hangi veri yazılmış o bilgininde mail body kısmına yazılması o işlevi de yapabilen bir kod eklenebilirse üstadlar tarafından güzel bir çalışma olur.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Merhaba

Hamitcan üstadım. Log tutmak evet güzel bir işlev fakat mail atılmasının da sağlanmasını istersek ki şöyle bir kod düzeneği mevcut elimde. bu kod düzeneğinde hücrede bir değişiklik yapınca maili gönderme işlevini yerine getiriyor. Örneğin Environ("UserName") ile hangi kullanıcı ise bunu mail body ye ekletebiliyorum ama hangi shette hangi hücrede eski değer ve yeni girilen değeri mail body ye yazdırabilme durumunu yapamadım.
bilgilerinizi rica ederim
Dediğim noktaya geliyoruz. Kişi sayfada bir sürü değişiklik yapmış olabilir. Bunları nasıl takip edebilirsiniz ?
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Üstadım biliyorum ama hani örnek olması açısından ne gibi bir kod eklenebilir. örneğin bu kodda şunuda yapabiliriz. her hücrede yapılan değişikliği değilde Bir sütunda veya bir satırda veya bir hücrede yapılan değişikliği mail olarak göndersin diyebiliriz. Örneğin aşağıdaki gibi A1 de yapılacak bir değişikliği mail olarak gönderebilir. ben sadece esktradan bu hücrede yani A1 de önceden hangi veri vardı şimdi hangi veri yazılmış bilgisini mail body kısmına nasıl ekleyebiliriz.

Set xRg = Intersect(Range("A1"), Target)
If xRg Is Nothing Then Exit Sub
If Target.Value > 0 Then
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Fikir vermesi için bir örnek ekliyorum. Daha sonra kendi kodunuza uyarlarsınız.
Sayfa1 A1 hücresinde dosya açıldığında 1 sayısı yazılı. Bu sayı daha önceden yazılmış.
Dosyayı açtıktan sonra Sayfa1 i seçip A1 hücresini değiştirin ve gömülü kodu çalıştırın.
Böylece her iki değeri görebileceksiniz.
 

Ekli dosyalar

Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
mail göndermek yerine log tutma örneği mi bu? ben dosyayı göremiyorum zira
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
9 nolu sorunuzun cevabı. Kodu çalıştırdığımda eski değer ve yeni değeri görebiliyorsunuz. Eski ve yeni değeri bulduğunuza göre mail body kısmına eklemekte kolay olur kanımca.
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Üstadım zaten log tutan kod düzeneği var ama işte bu kod düzeneğinde bazı kodları alıp hücre değişikliğine istinaden gönderilecek bu mail bu kod içeriğine uyguladım ama sonuç alamadım o yüzden bende sorma gereği hissettim. Teşekkürler
 
Üst