• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

e-mail (Windows Live Mail) versturen vanuit Excel

Status
Niet open voor verdere reacties.

Egbert12345

Gebruiker
Lid geworden
13 dec 2010
Berichten
525
Goedemorgen forummers

Ik heb een excellijst met een rij e-mailadressen, waarbij ieder e-mailadres een ander lidmaatschapsnummer staat.
Nu wil ik graag met behulp van VBA een macro maken die aan ieder e-mailadres een e-mail verstuurd waarbij ik een vaste tekst maak, maar waarbij wel een variabele is, namelijk het lidmaatschapsnummer.
Ik gebruik Windows Live Mail.
Ik ben wel aan het zoeken geweest naar een voorbeeldcode, maar kan het niet vinden (ben geen ster in dat soort zoeken).
Weten jullie wellicht waar ik een voorbeeldtekst kan vinden?

Met vriendelijke groet
Egbert
 
Hallo allen, via de website van Ron de Bruin kwam ik er niet echt uit. Nu heb ik nog een oude code gevonden die ik ooit in het verleden eens van iemand heb gekregen (zie onderstaand).
De macro loopt vast op de regel: Set oApp = CreateObject("Outlook.Application"). Ik werk met Windows Live Mail. Wat moet ik invullen i.p.v. outlook?

m.vr.gr Egbert


Sub emailen()

Dim oApp As Object, _
oMail As Object, _
WB As Workbook, _
FileName As String

'Create and show the outlook mail item
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
With oMail
.To = "(nog invullen)@kpnmail.nl"
.Subject = "Royement"
' .Attachments.Add bestand
.Body = "Inhoud van het mailtje"
.Display
End With

'Delete the temporary file
' WB.ChangeFileAccess Mode:=xlReadOnly
' Kill WB.FullName
' WB.Close SaveChanges:=False

Set oMail = Nothing
Set oApp = Nothing

End Sub
 
Heb je Outlook wel geïnstalleerd en ingericht staan?

Maar je wilde het toch met Windows Live Mail doen?
 
Nee, dat heb ik niet. Ik meende dat er verschil is tussen outlook (dat gebruikte ik vroeger op mijn werk) en Windows Live Mail (daar werk ik nu mee). Ik weet te weinig van VBA op dit gebied. Zal ik maar verder gaan zoeken?
 
Als je geen Outlook hebt gaat het op die manier in ieder geval niet werken. Als je je document hier plaatst wil ik wel een voorbeeldje voor je maken van hoe het werkt met Workbook.Sendmail.

Die van Ron de Bruin is prima maar wellicht wat te uitgebreid voor een beginner.
No offense... ;)
 
Edmoor, dat zou heel geweldig zijn. Als ik kijk naar Ron de Bruin, dan ben ik echt nog een beginner, alhoewel ik normaliter de weg toch wel weet te vinden.
Ik heb een voorbeeldbestandje gemaakt en bijgevoegd. Wat ik wil is dat ik per regel een e-mail kan versturen vanuit de lijst.
Graag hoor (en leer) ik van je.
gr EgbertBekijk bijlage test_mail.xlsm
 
Ik heb het voorbeeld van Ron de Bruin voor je uitgewerkt. Iedere ontvanger in je voorbeeld document op Blad1 krijgt zo individueel Blad2 als bijlage in de mail. Je eigen Sub heb ik aangepast en de Sub MailSend is er bij gekomen.

Code:
Sub emailen()
    Dim LastRow As Long
    Dim I As Long
    Dim Blad As String
    Dim Adres As String
    Dim Onderwerp As String
    
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
    
    For I = 2 To LastRow
        Adres = Cells(I, 1)     'Kolom A
        Onderwerp = Cells(I, 3) ' Kolom C
        Blad = "Blad2"
        Call MailSend(Adres, Onderwerp, Blad)
    Next I
End Sub

Sub MailSend(Ontvanger As String, Onderwerp As String, Blad As String)

    'For Tips see: http://www.rondebruin.nl/win/winmail/div/tips.htm
    'Working in Excel 2000-2013
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim I As Long

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    'Copy the sheet to a new workbook
    Sheets(Blad).Copy
    Set Destwb = ActiveWorkbook

    FileExtStr = ".xlsx": FileFormatNum = 51

    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Part of " & Sourcewb.Name & " " _
                 & Format(Now, "dd-mmm-yy h-mm-ss")

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, _
                FileFormat:=FileFormatNum
        On Error Resume Next
        .SendMail Ontvanger, Onderwerp
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
 
Laatst bewerkt:
Ik realiseerde mij al niet helemaal duidelijk te zijn geweest.
Het wordt een lijst met circa 400 unieke e-mailadressen. Ik wil graag dat per regel een onderwerp (subject) en daarna een tekst (body) wordt opgenomen. De tekst bevat dan bijvoorbeeld het lidnummer.
De lijst kan ik wel verwerken met een call-routine. Het gaat mij dus om het aanroepen en afsluiten van de email per regel.
Ben ik nu wat duidelijker?
 
Je kan met Workbook.Sendmail geen tekst sturen. Alleen een bestand als bijlage. De enige parameters zijn: Ontvanger, Onderwerp en Antwoord. Windows Live Mail heeft geen automatiseringsobject of shell toegang. Daarmee gaat het dus niet lukken, dan heb je echt Outlook nodig.
 
Als dat niet het gewenste resultaat heeft zou je nog met CDO aan de slag kunnen. Dan wordt er echter geen mail client gebruikt waarin verzonden items worden opgeslagen.
 
Hallo Edmoor, ik ben aan het zoeken, maar kan het niet vinden. Hoe zet ik CDO aan? Ik heb ook gezocht binnen VERWIJZINGEN in VBA, maar zonder succes helaas.
 
Deze link had ik al gevonden, maar ik zie er nergens in staan hoe ik CDO aanzet. Als ik de voorbeeldmacro van Ron probeer, dan loopt die vast op de laatste regel .Send
HSV had (zie bovenstaand) ook een advies gegeven en daar staat in dat CDO aangezet moet worden en ik meende dat het daar aan ligt.
Maar weet je wat Edmoor, laat het maar zitten allemaal. Ik heb er gewoon geen zin meer in.
gr Egbert
 
Da's jammer. Mocht je je bedenken, dan toch hier het stukje van Ron de Bruin uitgewerkt waarbij ik m'n eigen SMTP gegevens heb gebruikt. Die van jezelf heb je toch wel ingevuld neem ik aan?
Code:
Sub CDO_Mail_Small_Text()
    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    ' Dim Flds As Variant

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1    ' CDO Source Defaults
    Set Flds = iConf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.telfort.nl"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
        .Update
    End With

    strbody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2" & vbNewLine & _
              "This is line 3" & vbNewLine & _
              "This is line 4"

    With iMsg
        Set .Configuration = iConf
        .To = "mail@mail.com"
        .CC = ""
        .BCC = ""
        .From = """Ron"" <ron@something.nl>"
        .Subject = "New figures"
        .TextBody = strbody
        .Send
    End With
End Sub
 
Laatst bewerkt:
Je kan er moedeloos van worden soms ;)
Mooi dat het gelukt is en fijn weekend verder :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan