• 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 verzenden met PDF bijlage vanuit Excel.

Status
Niet open voor verdere reacties.

patrixweb

Gebruiker
Lid geworden
21 sep 2010
Berichten
105
Goedemorgen experts,

Ik ben al tijdje een het "klooien" om een e-mail te kunnen verzenden vanuit Excel middels een button.

Als er op de button "factuur verzenden" wordt geklikt dan moet er eerst een pop-up komen met een waarschuwing of je zeker weet dat je de factuur wilt verzenden.

Als je hier akkoord op geeft dan moet de factuur in PDF als bijlage verzonden worden naar het e-mailadres dat in CEL B16 staat.

Indien mogelijk een standaard tekst in de e-mail.

Ik heb een voorbeeld toegevoegd.

Hopelijk is er iemand onder jullie die mij hiermee kan helpen.

Bij voorbaat dank

Gr. Patrick
 

Bijlagen

Het maken van de PDF doe je al.
Hoe je een mail moet sturen zijn hier zoveel voorbeelden van te vinden dat dat geen probleem zou moeten zijn.
De vraag vooraf kan bijvoorbeeld met:
Code:
If MsgBox("PDF mailen?", vbQuestion) <> vbYes Then Exit Sub
 
@AD1957, Die had ik ook al bekeken maar nu werk ik met iets anders zoals mijn voorbeeld ook laat zien.

Bestand toevoegen als PDF in de mail en het mailadres gebruiken (waar de mail naar toe moet) uit cel B16 halen, deze veranderd natuurlijk telkens.

@edmoor, ik had al rond gekeken maar ik zal nogmaals rond kijken of ik de juiste topic kan vinden.
 
voor de ontvanger kan je toch verwijzen naar cel B16 zoals in andere topic staat?
Code:
 With iMsg
        Set .Configuration = iConf
        .To = [COLOR="#FF0000"]range("B16").value[/COLOR]
        .CC = ""
        .BCC = ""
        .From = SMTPusername
        .Subject = "Belangrijk bericht"
        .TextBody = BodyText
        .Send
    End With

niet getest.
 
@AD1957, Ik ben al een eind heen maar ik zit nog wel te stoeien met het toevoegen van de PDF i.p.v. het hele bestand. Tevens probeer ik dit ook onder een andere button te brengen i.p.v. de commandbutton ;-)

Voorbeeld in de bijlage.
 

Bijlagen

Je moet ook de PDF toevoegen, niet het werkboek:
Code:
.Attachments.Add "C:\Users\Patri\Desktop\TEMP\" & FacName & ".pdf"
 
Laatst bewerkt:
Zet deze code en pas het eventueel aan onder je knop Factuur verzenden

Code:
Sub Rechthoek9_Klikken()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim PdfFile As String
    Dim FacName As String
    
    response = MsgBox("Factuur" & FacName & " wordt per email verzonden," & vbCrLf & _
    "naar : " & Sheets("Factuur").Range("B12").Value & vbCrLf & _
    "emailadres : " & Sheets("Factuur").Range("B16").Value & vbCrLf & vbCrLf & _
    "Factuur nu verzenden ?", vbYesNo + vbQuestion, "Outlook mail")
    If response = vbYes Then
        GoTo Zendmail
    Else
    End If
    Exit Sub
Zendmail:
    
    FacName = Sheets("Factuur").Range("I12").Value
    PdfFile = Environ("temp") & "\" & "Factuurnr. " & FacName & ".pdf"
    Sheets("Factuur").ExportAsFixedFormat Type:=0, Filename:=PdfFile
    
    With Sheets("Factuur")
        strbody = "Geachte  " & .Range("B13") & "," & vbNewLine & vbNewLine & _
        "Hierbij ontvangt u een factuur van " & .Range("F2") & vbNewLine & _
        "In de bijlage treft u uw factuur aan in PDF-formaat." & vbNewLine & vbNewLine & _
        "De informatie opgenomen in de email kan vertrouwelijk zijn en is uitsluitend bestemd," & vbNewLine & _
        "voor de geadresseerde. Indien u deze email onterecht ontvangt dan wordt u verzocht de," & vbNewLine & _
        "email te verwijderen uit uw systeem, en de afzender te informeren."
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .To = Sheets("Factuur").Range("B16").Value
        .CC = ""
        .BCC = ""
        .Subject = "Hierbij ontvangt u een factuur van " & Sheets("Factuur").Range("F2")
        .Body = strbody
        .Attachments.Add PdfFile
        .Display
    End With
    Set OutMail = Nothing
    Set OutApp = Nothing
    Kill Environ("temp") & "\" & "*.pdf"
End Sub
 
Fantastisch loek010, dat is precies wat ik nodig heb.

Ik wil iedereen bedanken die op deze topic heeft gereageerd en mij in de juiste richting hebben geduwd.
 
Wat een puinhoop aan code die ook nog niet eens correct werkt. En toch is het opgelost?
 
Een GoTo is natuurlijk uit den boze tegenwoordig.
Wijzig dit:
Code:
    response = MsgBox("Factuur" & FacName & " wordt per email verzonden," & vbCrLf & _
    "naar : " & Sheets("Factuur").Range("B12").Value & vbCrLf & _
    "emailadres : " & Sheets("Factuur").Range("B16").Value & vbCrLf & vbCrLf & _
    "Factuur nu verzenden ?", vbYesNo + vbQuestion, "Outlook mail")
    If response = vbYes Then
        GoTo Zendmail
    Else
    End If
    Exit Sub
Zendmail:

Eens in dit:
Code:
    If MsgBox("Factuur" & FacName & " wordt per email verzonden," & vbCrLf & _
              "naar : " & Sheets("Factuur").Range("B12").Value & vbCrLf & _
              "emailadres : " & Sheets("Factuur").Range("B16").Value & vbCrLf & vbCrLf & _
              "Factuur nu verzenden ?", vbYesNo + vbQuestion, "Outlook mail") <> vbYes Then Exit Sub

En ja, ook dat Zendmail label weg.
 
@Edmoor

Dat een GoTo tegenwoordig uit den boze is dat zou zo zijn maar waarom ? de code werkt er niet minder om oke hij is langer als jouw code
weer wat geleerd en hier heb ik wat aan om te leren.
maar als iemand alleen maar alles afzijkt en daar geen uitleg verder aangeeft dan kan ik wel pissig worden.
 
Daar reageerde ik dan ook niet op ;)

GoTo is uit den boze omdat code waarin dat wordt gebruikt "spaghetti" code wordt genoemd.
Eén GoTo zoals ik jouw code doet natuurlijk niks af aan de werking, maar als je dat veel gaat gebruiken in een programma wordt het een wirwar van Goto's en Returns waardoor code moeilijk te volgen is.
De naam "spaghetti" komt dan ook vanwege die wirwar.

Niet gebruiken dus, want het is nooit nodig, anders dan misschien eens om naar het einde van een programma te springen.
 
@edmoor

Bedankt voor je uitleg zal deze uitleg meenemen in het vervolg om spaghetti code te vermijden :d

Thanks ;)
 
De variabele FacName krijgt geen waarde. Het gebruik van Sheets("Factuur") en With Sheets("Factuur") wordt door elkaar gebruikt. Als je variabelen declareert, declareer ze dan allemaal of geen.

Code:
Sub Rechthoek9_Klikken()
  With Sheets("Factuur")
    FacName = .Range("I12").Value
    PdfFile = Environ("temp") & "\" & "Factuurnr. " & FacName & ".pdf"
    
    If MsgBox("Factuur" & FacName & " wordt per email verzonden," & vbCrLf & "naar : " & .Range("B12").Value & vbCrLf & "emailadres : " & .Range("B16").Value & vbCrLf & vbCrLf & "Factuur nu verzenden ?", vbYesNo + vbQuestion, "Outlook mail") <> vbYes Then Exit Sub
      .ExportAsFixedFormat Type:=0, Filename:=PdfFile
    
      strbody = "Geachte  " & .Range("B13") & "," & vbNewLine & vbNewLine & _
        "Hierbij ontvangt u een factuur van " & .Range("F2") & vbNewLine & _
        "In de bijlage treft u uw factuur aan in PDF-formaat." & vbNewLine & vbNewLine & _
        "De informatie opgenomen in de email kan vertrouwelijk zijn en is uitsluitend bestemd," & vbNewLine & _
        "voor de geadresseerde. Indien u deze email onterecht ontvangt dan wordt u verzocht de," & vbNewLine & _
        "email te verwijderen uit uw systeem, en de afzender te informeren."
        
      aan = .Range("B16").Value
    End With

    With CreateObject("Outlook.Application").CreateItem(0)
        .To = aan
        .Subject = "Hierbij ontvangt u een factuur van " & Sheets("Factuur").Range("F2")
        .Body = strbody
        .Attachments.Add PdfFile
        .Display
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan