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

Code .body in sendmail + opmaak

Status
Niet open voor verdere reacties.

SlootsJ

Gebruiker
Lid geworden
17 jul 2019
Berichten
26
Hi,

Onderstaande code krijg ik niet aan de praat, het gaat om het stukje .body.


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 = "GC  Update per: " & Date & " van: " & Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .body = <b>Overzicht afspraken</b>
        
                <b>Communicatie</b>
                "(Sheets("blad1").Range("C16"))"
                
                <b>Plannen & Organiseren</b>
                "(Sheets("blad1").Range("C29"))"
                
                <b>Initiatef</b>
                "(Sheets("blad1").Range("C45"))"
                
                <b>Coachen en Samenwerken</b>
                "(Sheets("blad1").Range("C61"))"
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub

Hierbij ook het bestand bijgevoegd zonder beveiliging.


Met vriendelijke groet,

Jeroen
 

Bijlagen

Je fout kun je zo oplossen:
Code:
        .htmlbody = "<b>Overzicht afspraken:</b>"
 
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 = "GC  Update per: " & Date & " van: " & Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = "<b>Overzicht afspraken:</b>"
        
        "<b>Communicatie:</b>"
        & Join(Application.Transpose(Sheets("Blad1").Range("C16")), vbCrLf)
        
        "<b>Plannen en organiseren</b>"
        & Join(Application.Transpose(Sheets("Blad1").Range("C29")), vbCrLf)
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub

Het document geeft aan dat er iets niet klopt.
 
Bij mij doet-ie het, al heb ik alleen de eerste regel getest. Je hebt er wel een lege tekstregel tussenzitten, en je combineert de regels niet.

Code:
        .htmlbody = "<b>Overzicht afspraken:</b><Br>" _
             & "<b>Communicatie:</b><Br>"" _
             & Join(Application.Transpose(Sheets("Blad1").Range("C16")), vbCrLf)& "<Br>" _
             & "<b>Plannen en organiseren</b><Br>" _
             & Join(Application.Transpose(Sheets("Blad1").Range("C29")), vbCrLf)
Kun je nog eens uitproberen.
 
Hi,

Hij geeft het volgende aan:

voorbeeld.png

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 = "GC  Update per: " & Date & " van: " & Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = "<b>Overzicht afspraken:</b><Br>" _
             & "<b>Communicatie:</b><Br>""" _
             & Join(Application.Transpose(Sheets("Blad1").Range("C16")), vbCrLf) & "<Br>" _
             & "<b>Plannen en organiseren</b><Br>" _
             & Join(Application.Transpose(Sheets("Blad1").Range("C29")), vbCrLf)
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
    
End Sub
 
Aanvulling: Het bereik heb ik al aangepast naar de juiste sheetnummers en cellen, toch blijft de error zich herhalen.
 
De foutcode 9 subscript valt buiten bereik komt door dit

Code:
EmailManager = Range("EmailManager")
    EmailBCC = Range("EmailBCC")
    EmailCC = Range("EmailCC")

vervang het door deze code

Code:
EmailManager = Sheets("Instellingen").Range("EmailManager")
    EmailBCC = Sheets("Instellingen").Range("EmailBCC")
    EmailCC = Sheets("Instellingen").Range("EmailCC")

de code in de .HtmlBody is volgens mij ook niet geheel correct
 
Aangepaste Code dit werkt alleen als je de samengevoegde cellen C16 t/m C21 en C29 t/m C34 in blad Competenties opheft

Code:
Sub CommandButton2_Click()
    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Overzicht afspraken:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br>" & _
             .Range("C17") & "<Br>" & _
             .Range("C18") & "<Br>" & _
             .Range("C19") & "<Br>" & _
             .Range("C20") & "<Br>" & _
             .Range("C21") & "<Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br>" & _
             .Range("C30") & "<Br>" & _
             .Range("C31") & "<Br>" & _
             .Range("C32") & "<Br>" & _
             .Range("C33") & "<Br>" & _
             .Range("C34")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Zie afbeelding :

SharedScreenshot.jpg
 
Laatst bewerkt:
Aangepaste Code dit werkt alleen als je de samengevoegde cellen C16 t/m C21 en C29 t/m C34 in blad Competenties opheft

Code:
Sub CommandButton2_Click()
    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Overzicht afspraken:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br>" & _
             .Range("C17") & "<Br>" & _
             .Range("C18") & "<Br>" & _
             .Range("C19") & "<Br>" & _
             .Range("C20") & "<Br>" & _
             .Range("C21") & "<Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br>" & _
             .Range("C30") & "<Br>" & _
             .Range("C31") & "<Br>" & _
             .Range("C32") & "<Br>" & _
             .Range("C33") & "<Br>" & _
             .Range("C34")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Zie afbeelding :

Bekijk bijlage 341082

Excellent (pun intended), de code werkt nu naar behoren.
Toch nog 1 vraagje, stel ik wil uit het tabblad 'resultaatgebieden' de afspraken toevoegen, hoe krijg ik die er dan bij in?
 
Code:
Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Comptetenties:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br><Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br><Br>" & _
             "<b>Initiatief:</b><Br>" & _
             .Range("C45") & "<Br><Br>" & _
             "<b>Coachen/Samenwerken:</b><Br>" & _
             .Range("C61")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Dit werkt.

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

    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Comptetenties:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br><Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br><Br>" & _
             "<b>Initiatief:</b><Br>" & _
             .Range("C45") & "<Br><Br>" & _
             "<b>Coachen/Samenwerken:</b><Br>" & _
             .Range("C61")
             
    With Sheets("Resultaatgebieden")
             "<b>Resultaatgebieden:</b><Br><Br>" & _
             "<b>Acquisitie MTD</b><Br>" & _
             .Range("D9")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Dit niet.

Untitled.png
 

Bijlagen

Laatst bewerkt:
mist daar niet:

StrBody=
 
mist daar niet:

StrBody=

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

    Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Comptetenties:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br><Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br><Br>" & _
             "<b>Initiatief:</b><Br>" & _
             .Range("C45") & "<Br><Br>" & _
             "<b>Coachen/Samenwerken:</b><Br>" & _
             .Range("C61")
    End With
    
    With Sheets("Resultaatgebieden")
    StrBody = "<b>Resultaatgebieden:</b><Br><Br>" & _
             "<b>Acquisitie MTD</b><Br>" & _
             .Range("D9")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Bedankt voor je antwoord, nu krijg ik de melding 'fout 9 tijdens uitvoering: subscript buiten bereik'.
 
De foutmelding komt van With Sheets("Resultaatgebieden") in je tabblad naam staat een spatie achter "Resultaatgebieden "
dus zet een spatie achter Sheets("Resultaatgebiedenspatie")

indien je ook een ander tabblad in de mail wilt doe het dan zo :

Code:
Sub Mail()
   Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Overzicht afspraken:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br><Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br><Br>" & _
             "<b>Initiatief:</b><Br>" & _
             .Range("C45") & "<Br><Br>" & _
             "<b>Coachen/Samenwerken:</b><Br>" & _
             .Range("C61") & "<Br><Br>" & _
             "<b>Resultaatgebieden:</b><Br><Br>" & _
             "<b>Acquisitie MTD</b><Br>" & _
             Sheets("Resultaatgebieden ").Range("D9")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub
 
De foutmelding komt van With Sheets("Resultaatgebieden") in je tabblad naam staat een spatie achter "Resultaatgebieden "
dus zet een spatie achter Sheets("Resultaatgebiedenspatie")

indien je ook een ander tabblad in de mail wilt doe het dan zo :

Code:
Sub Mail()
   Dim EmailManager As String
    Dim EmailCC As String
    Dim EmailBCC As String
    
    With Sheets("Instellingen")
    EmailManager = .Range("EmailManager")
    EmailBCC = .Range("EmailBCC")
    EmailCC = .Range("EmailCC")
    End With
    
    With Sheets("Competenties")
    StrBody = "<b>Overzicht afspraken:</b><Br><Br>" & _
             "<b>Communicatie:</b><Br>" & _
             .Range("C16") & "<Br><Br>" & _
             "<b>Plannen en organiseren:</b><Br>" & _
             .Range("C29") & "<Br><Br>" & _
             "<b>Initiatief:</b><Br>" & _
             .Range("C45") & "<Br><Br>" & _
             "<b>Coachen/Samenwerken:</b><Br>" & _
             .Range("C61") & "<Br><Br>" & _
             "<b>Resultaatgebieden:</b><Br><Br>" & _
             "<b>Acquisitie MTD</b><Br>" & _
             Sheets("Resultaatgebieden ").Range("D9")
    End With
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = EmailManager
        .CC = EmailCC
        .BCC = EmailBCC
        .Subject = "GC  Update per: " & Date & " van: " & Sheets("Competenties").Range("C2")
        .Attachments.Add ActiveWorkbook.FullName
        .htmlbody = StrBody
        .Display    'Send
    End With
        
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Heel scherp! En bedankt voor de tip.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan