vba code om vanuit excel het hele bestand te mailen

Status
Niet open voor verdere reacties.

carlocarlo

Gebruiker
Lid geworden
14 apr 2009
Berichten
122
Ik ben op zoek naar een code waarmee ik het volledige excel bestand, waaraan ik werk, via outlook te mailen.
De mail moet dan niet direct worden verzonden maar wel klaar worden gezet net het excel bestand als bijlage.
Verder moet er direct een tekst in het onderwerp komen, bijvoorbeeld : doorsturen.
Vervolgens wil ik alleen nog maar op de verzendknop drukken om de mail met bijlage te verzenden.
Wie kan mij s.v.p. verder helpen?
 
Even de zoekfunctie gebruiken? Dit soort vragen komen bijna wekelijks voor.
 
Nog maar een keer dan ;)
Code:
Private Sub CommandButton1_Click()
    Dim OutApp As Object
    Dim OutMail As Object
    
    If Not ActiveWorkbook.Saved Then
        If ActiveWorkbook.Path = "" Then
            MsgBox "Het document is nog niet opgeslagen.", vbCritical, "Mailen document"
            Exit Sub
        End If
        
        If MsgBox("De wijzigingen zijn nog niet opgeslagen. Doorgaan?", vbYesNo + vbCritical, "Mailen document") = vbNo Then
            Exit Sub
        End If
    End If
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .To = "edmoor@helpmij.nl"
        .CC = ""
        .BCC = ""
        .Subject = "Doorsturen"
        .Body = "Bij deze het bestand"
        .Attachments.Add ActiveWorkbook.FullName
        .Display
    End With
End Sub
 
Beste edmoor, onzettend bedank voor de code. Het lukte mij niet om de juiste te vinden. Het je toevallig ook een code waarmee in een bepaalde range in een email kan plakken zonder het hele Excel bestand te mailen. Ik bedenk mij dat die wijze misschien nog makkelijker is.
 
Daar zijn weer meerdere mogelijkheden voor.
Uiteraard kan ik dat voor je maken, maar het is beter om dat zelf te doen.
Je kan er alles over vinden op deze site:
https://www.rondebruin.nl/win/s1/outlook/mail.htm

Als er iets niet lukt zoals je zou willen dan laat het hier maar weten.
 
Hoi edmoor, het is na veel gepuzzel gelukt. Toch kom ik er niet helemaal uit. Onderstaand het script

Code:
Sub Send_Range()
   
   ' Een cellenbereik selecteren in het actieve werkblad.
   ActiveSheet.Range("A2:c9").Select
   
   ' De envelop weergeven in de actieve werkmap.
   ActiveWorkbook.EnvelopeVisible = True
   
   ' Een optionele toelichting toevoegen om
   ' een koptekst op te nemen in het e-mailbericht. Hiermee worden ook de regels
   ' Aan en Onderwerp ingesteld. Tot slot wordt het bericht
   ' verzonden.
   With ActiveSheet.MailEnvelope
      .Introduction = "Collega's, kunnen jullie bijgaand bestand verder in behandeling nemen."
      .Item.To = "email vermelden"
      .Item.Subject = "Onderwerp"
      .Item.Send
   End With
End Sub

Bij Item.Send zou ik graag willen zien dat achter de tekst "Vraag over klant" ook de naam van de klant komt die in een bepaalde cel staat.
Verder zou ik willen dat de mail niet direct de deur uit gaat maar dat ik de mail eerst zie en zelf op de verzendknop moet drukken.
Kun je mij daarmee verder helpen?

Vast bedankt voor de moeite.
 
Laatst bewerkt:
Je moet ook niet MailEnvelope gebruiken maar Outlook, zoals in mijn voorbeeld.
Plaats tevens een voorbeeld document.

Als je hier code plaatst, zet deze dan tussen codetags zodat het makkelijk leesbaar is, zoals in #3.
Zie de link in mijn handtekening.
 
Laatst bewerkt:
Beste edmoor, dank je voor de tip. Ik heb de code op de juiste manier er in geplakt.
Teven heb ik het bestand toegevoegd.
Ik heb een poging gedaan om de code aan te passen maar merk dat mijn kennis eigenlijk ontoereikend is. Ik hoop dat je mij nog verder kunt helpen.
ast bedankt voor de moeite.
 

Bijlagen

  • verlof4.xlsm
    15,9 KB · Weergaven: 96
Beste edmoor, ik heb toch nog een aanvullende vraag. Als ik de waarde uit cel b3, d3, b5 en d5 in de onderwerpregel wil hebben, welke code moet ik dan toevoegen?

Code:
Sub Send_Range()
    Dim OutApp As Object
    Dim OutMail As Object
    
    'Een cellenbereik selecteren in het actieve werkblad.
    HTMLBody = RangetoHTML(ActiveSheet.Range("A1:D10"))
    
    HTMLBody = "Collega's, <br> <br> Kunnen jullie bijgaand bestand verder in behandeling nemen.<br>" & HTMLBody

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .To = "edmoor@helpmij.nl"
        .CC = ""
        .BCC = ""
        .Subject = "Onderwerp"
        .HTMLBody = HTMLBody
        '.Attachments.Add ActiveWorkbook.FullName
        .Display
    End With

End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2016
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.readall
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function
 
Zo:
Code:
.Subject = Range("B3") & Range("D3") & Range("B5") & Range("D5")
 
Beste edmoor, opnieuw bedankt voor je tijd en de code. Het werkt perfect.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan