exel een mail laten sturen van een bepaalde range op basis van een cel waar of onwaar

Status
Niet open voor verdere reacties.

vdbogert

Nieuwe gebruiker
Lid geworden
9 dec 2015
Berichten
2
goedendag,

de laatste tijd ben ik aan het uitzoeken hoe ik een mailtje kan versturen doormiddel van exel
dit op basis van een bepaalde cel die op waar of onwaar staat.
mijn vraag nu is of iemand een VBA code heeft dit dit kan realiseren.

dit is mijn eigen code maar ik denk dat daar een fout in zit want het werkt niet



Sub Waarde_in_range_mail()
c01 = "<table border=1 bgcolor=#FFFFF0#>"

If Sheets("Blad1").Range("G29") = "WAAR" Then

sn = Sheets("Blad1").Range("A1:I22")
For j = 1 To UBound(sn)
c01 = c01 & "<tr><td>" & Join(Application.Index(sn, j), "</td><td>") & "</td></tr>"
Next
c01 = c01 & "</table><P></P><P></P>"
Dim objMail As Object

Set objOL = CreateObject("Outlook.Application")

With CreateObject("Outlook.Application").CreateItem(0)
.To = "email@mail.com"
.Subject = "werkbladgebied waarden"
.HTMLBody = c01
.Send
End With
End If
End Sub

ik hoop dat iemand me hier mee kan helpen
 
Bij het gebruik van .HTMLBody moet je zowel .Display als .Send gebruiken. Allebei dus en ook in die volgorde.
Gebruik bij het plaatsen van code hier ook codetags. Dan komt je code mooi en leesbaar in een kadertje te staan zoals ik dat deed.

Heb 'm even voor je uitgeschreven: (Voor gebruik zonder Option Explicit)
Code:
Sub Waarde_in_range_mail()
    Dim objMail As Object

    If Sheets("Blad1").Range("G29") = True Then
        sn = Sheets("Blad1").Range("A1:I22")
        
        c01 = "<table border=1 bgcolor=#FFFFF0#>"
        For j = 1 To UBound(sn)
            c01 = c01 & "<tr><td>" & Join(Application.Index(sn, j), "</td><td>") & "</td></tr>"
        Next j
        c01 = c01 & "</table><P></P><P></P>"
        
        Set objMail = CreateObject("Outlook.Application")
        With objMail.CreateItem(0)
            .To = "email@mail.com"
            .Subject = "werkbladgebied waarden"
            .HTMLBody = c01
            .Display
            .Send
        End With
    End If
End Sub

Let erop dat G29 de waarde WAAR, dus True bevat en niet de tekst WAAR.
 
Laatst bewerkt:
dankjewel ik heb deze code aangepast.

nu nog een misschien klein vraagje als dat mag: ik loop nu tegen het probleem aan dat ik VBA iedere keer bij een wijziging in waar of onwaar moet uitvoeren (F5) is het ook mogelijk dat exel een mail stuurt zodra ik een wijziging aanbreng zonder VBA op te starten ?

Met vriendelijke groet,
 
Dat kan, maar of je dat handig gaat vinden betwijfel ik. Plaats dit achter Blad1:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case "$G$29"
            If Target Then Call Waarde_in_range_mail
    End Select
End Sub

Sub Waarde_in_range_mail()
    Dim objMail As Object

    sn = Sheets("Blad1").Range("A1:I22")
        
    c01 = "<table border=1 bgcolor=#FFFFF0#>"
    For j = 1 To UBound(sn)
        c01 = c01 & "<tr><td>" & Join(Application.Index(sn, j), "</td><td>") & "</td></tr>"
    Next j
    c01 = c01 & "</table><P></P><P></P>"
        
    Set objMail = CreateObject("Outlook.Application")
    With objMail.CreateItem(0)
        .To = "email@mail.com"
        .Subject = "werkbladgebied waarden"
        .HTMLBody = c01
        .Display
        .Send
    End With
End Sub

Je kan die mail code uiteraard ook achter een knop plaatsen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan