• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
20 Ekim 2017
Mesajlar
7
Excel Vers. ve Dili
2013 Türkçe
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.
 
Her değişiklikte mail atması doğru değil bence. En iyisi log tutmak. Log tutma ile ilgili örnekler forumda mevcut.
 
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
 
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 ?
 
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.
 
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
 
ş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.
 
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 ?
 
Ü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
 
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

mail göndermek yerine log tutma örneği mi bu? ben dosyayı göremiyorum zira
 
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.
 
Ü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
 
Geri
Üst