• 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.

SendMail op basis van waarde cell

Status
Niet open voor verdere reacties.

SlootsJ

Gebruiker
Lid geworden
17 jul 2019
Berichten
26
Hi,

Betreft Excel 2007

Wij werken met Excel sheets voor interne afspraken en ontwikkeling, nu wordt het bestand steeds opnieuw opgeslagen en raken we het kwijt, of de schijf wordt onoverzichtelijk vol.

Nu ben ik aan het stoeien geweest met de Sendmail functie, maar hier kom ik totaal niet uit.

De ideale situatie zou zijn als ik met een knop een VBA activeer die het bestand automatisch per mail verstuurd.
Het mail adres + CC + BCC op basis van de waarde in bepaalde cellen.

Of dat Outlook 2007 wordt geopend met het bestand als bijlage.
 
Laatst bewerkt:
Hi,

De website is mij inderdaad bekend, de volgende code probeer ik te gebruiken.

Code:
Sub Mail_workbook_Outlook_1()
'Working in Excel 2000-2016
'This example send the last saved version of the Activeworkbook
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .to = "ron@debruin.nl"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = "Hi there"
        .Attachments.Add ActiveWorkbook.FullName
        'You can add other files also like this
        '.Attachments.Add ("C:\test.txt")
        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Telkens wanneer ik deze uitvoer krijg ik "Fout bij het laden van DLL".
 
error.png

Zo ver ik kan zien, geeft de melding geen specifieke regel weer.
 
Zet dan die overbodige On Error Resume Next uit.
 
Welke bijlage? Kijk eens bij Extra Verwijzingen of je daar iets raars ziet. Je moet het bestand overigens wel eerst opslaan anders krijg je ook een foutmelding.
 
Hi EdMoor, ook zonder de resume regel ontvang ik de zelfde foutmelding.

Hi Vena, bestand is opgeslagen als excel met macro's, helaas niet geholpen.

De foutmelding geeft verder ook geen specifieke fout aan (helaas), enkel 'fout bij het laden van DLL'.
 
VenA bedoelt dat je in de VBA editor moet klikken op Extra en dan Verwijzingen en daar kijken of er ergens ONTBREEKT bij staat.
 
Laatst bewerkt:
Klik in de VBA editor eens op Foutopsporing en dan VBA project compileren.
Wat gebeurt er dan?
 
Het vage is dat onderstaande code wel werkt, maar deze code doet niet wat ik wil.
Het enige wat ik hier aan zou willen veranderen is als volgt.
  • Ontvanger op basis van waarde Cell.
  • Gehele document bijvoegen als bijlage.
  • Onderwerp datum van vandaag + naam document.



Code:
Private Sub CommandButton2_Click()
'Code van Dotchie
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
    With OutMail
        For Each cell In ThisWorkbook.Sheets(1).Range("I6:I750")
            If cell.Value Like "?*@?*.?*" And LCase(cell.Offset(0, 1).Value) = "ja" Then
                If strto = "" Then strto = stro & ";"
                strto = strto & cell.Value & ";"
            End If
        Next cell
        .To = strto
        .CC = ""
        .BCC = ""
        .Subject = Sheets(2).Range("A2").Value
        For Each cell In ThisWorkbook.Sheets(2).Range("A4:A50")
            StrBody = StrBody & cell.Value & vbNewLine
        Next
        .body = StrBody
        .Display    'Send
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub
 
Plaats een voorbeeld van je document en vertel er bij uit welke cel de ontvanger moet worden gehaald.
 
Code:
Private Sub CommandButton2_Click()
    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    EmailManager = Range("EmailManager")
    EmailBCC = Range("EmailBCC")
    EmailCC = Range("EmailCC")
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "Het onderwerp " & Date
        .Attachments.Add ActiveWorkbook.FullName
        .body = "De mail tekst"
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


Super! Deze code werkt wel.
Is het ook mogelijk deze VBA te 'triggeren' wanneer het bestand wordt opgeslagen?
 
Dat kan in de ThisWorkbook sectie met:
Code:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 
Dat kan in de ThisWorkbook sectie met:
Code:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Erg fijn, helaas ben ik nog 1 ding vergeten.
Op de 'instellingen sheet' heb ik de box met datum vervangen voor 'naam medewerker'.
Deze moet mee in het onderwerp, hoe krijg ik dat voor elkaar?

Excel en Code bijgevoegd.

Code:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    EmailManager = Range("EmailManager")
    EmailBCC = Range("EmailBCC")
    EmailCC = Range("EmailCC")
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "Het onderwerp " & Date
        .Attachments.Add ActiveWorkbook.FullName
        .body = "De mail tekst"
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub
 

Bijlagen

  • Voorbeeld2.xlsm
    73,2 KB · Weergaven: 19
Dat staat niet in je voorbeeld document.
Maar je kan dit doen:
Code:
.Subject = "Het onderwerp " & Date & "naam: " & range("A1")

Als die medewerker Cel A1 van het blad Instellingen staat.
 
Dat staat niet in je voorbeeld document.
Maar je kan dit doen:
Code:
.Subject = "Het onderwerp " & Date & "naam: " & range("A1")

Als die medewerker Cel A1 van het blad Instellingen staat.

Awesome, bedankt voor de hulp!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan