PDF bijlage aan email toevoegen icm onderstaande code

Status
Niet open voor verdere reacties.

pascal2303

Gebruiker
Lid geworden
30 okt 2013
Berichten
9
PHP:
Goedemiddag,

Ik ben bezig met het ontwikkelen van een programmatje, veel zoeken en leren om VBA beter te begrijpen en toepassen. Na urenlang zoeken op het internet krijg ik onderstaande niet voor elkaar en hoop ik dat er iemand is die me hierbij kan helpen.

Wat me lukt :
Automatisch een email genereren met alle inhoud.

Wat me (nog) niet lukt :
Een PDF bestand toevoegen als bijlage, het opslaan gaat prima, op locatie gekoppeld via een cel met bestandsnaam idem. Nu wil ik dat zelfde opgeslagen bestand toevoegen in een email. Hieronder de macros die ik tot dusver heb om een email te verzenden (bijlage lukt niet) en om een bepaald tabblad als PDF op te slaan zoals gezegd met gekoppelde bestandsnaam en locatie. Deze werken helemaal naar wens met alle mogelijkheden die erin zitten.

Graag zou ik deze samenvoegen zodat ze als 1 geheel kunnen functioneren.

MAIL VERSTUREN

Code:
Sub Stuur_Email()
' Working in Office 2000-2013

    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

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

    strbody = "Geachte " & ActiveSheet.Range("A6") & "," & _
              "" & vbNewLine

    On Error Resume Next

    With OutMail
        .Display
        .to = ActiveSheet.Range("A5").Value
        .CC = ""
        .BCC = ""
        .Subject = ""
        .Attachments.Add ActiveSheet.Range("E4")
        .HTMLBody = strbody & "<br>" & .HTMLBody
        .Display

    End With

    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub


OPSLAAN BESTAND :
Code:
Sub opslaan()
Dim stPath As String
With Sheets("Facturatie")
    stPath = "C':\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\"
    stPath = stPath & .Range("d22").Value & "\"
    With CreateObject("Scripting.FileSystemObject")
    End With
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
          Range("E4") & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
End With
End Sub



Nogmaals, ik hoop dat iemand me kan helpen ik hang echt al dagen vast hierin en wat ik ook probeer het wil me niet lukken.

Thnx !
Groet. Pascal
 
Laatst bewerkt:
3 dingen:
- Maak je code even op met de Code knop.
- Haal die On Error Resume Next eruit.
- Laat een voorbeeld zien van wat er precies in cel E4 staat.
 
Bedankt voor de feedback, was 1e berichtje hier en wist nog niet zo goed hoe en wat, volgens mij is het nu naar behoren aangepast.

In cel E4
'C':\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\P100.pdf

Maar ik kom eigenlijk net tot de ontdekking dat dit niet werkzaam gaat zijn gezien het bestand steeds een andere naam krijgt en ik het dan onnodig moeilijk maak (denk ik) dus misschien beter om te kijken of beide codes gekoppeld kunnen worden en het opgeslagen bestand als bijlage word toegevoegd ?
 
Dit gaat dan niet goed:
'C':\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\P100.pdf

Dat moet zijn:
C:\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\P100.pdf

Daarnaast zul je dan inderdaad moeten bepalen hoe je het flexibel wilt hebben qua bestandsnaam.
 
Laatst bewerkt:
Heb dat aangepast maar ook met die wijziging werkt het nog niet, maar zou het denk ik toch praktischer vinden om de codes te koppelen dus opgeslagen bestand als bijlage laten toevoegen. Kan dat ? en zo ja zou je me daarmee kunnen helpen ?
 
Heb je de On Error Resume Next verwijderd?
 
dan krijg ik deze melding :

Run-time error '438':
Object doesn't support this property or method
 
als ik op debug klik word ".Attachmenst Add = ActiveSheet.Range("E4").Value" geel gearceerd
 
Vraag verplaatst naar VBA
 
Plaats eens een voorbeeldbestandje en geef duidelijk in welke cel het pad staat, hoe je de bestandsnaam samenstelt (met welke cellen).
Ook maak je in je opslaan macro een padnaam aan maar je gebruikt het dan niet bij het opslaan.
Denk daar dus eens goed over na zodat je kan zeggen in die cel staat het volledige pad, in die cel staat de bestandsnaam zodat hier naar verwezen kan worden in de code.
 
Heb je de recente versie gelezen van 20:10 uur ?
Dan word je helemaal niet vrolijk.
 
Bekijk bijlage Voorbeeldbestand.xlsmBekijk bijlage Voorbeeldbestand.xlsmhttp://www.worksheet.nl/forumexcel/showthread.php?t=85456&p=686614

ik zie nu pas je reactie

eigenlijk heb ik door de vele instructies en voorbeeldbestandjes op internet die ik heb afgezocht, uitgeprobeerd en keer op keer heb aangepast geen idee meer wat nu waar staat. En heb tevens de eerst werkende macro voor het opslaan van het bestand niet meer werkend gekregen. Kortom chaos hier, ben echt de draad kwijt.

Bij het opslaan worden de volgende cellen gebruikt voor bestandsnaam waarvan cel E3 de locatie aangeeft en cel E4 de bestandsnaam (dit moet in PDF) :

In cel E3 op tabblad facturatie : =CONCATENATE("C:\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\";Klantenkaart!A7)
in cel E4 op tabblad facturatie : =CONCATENATE(Klantenkaart!A7;" - ";"Factuur";" ";C22-1;)

De email word verzonden met de volgende cellen gekoppeld :

in cel A5 op tabblad Klantenkaart : =VLOOKUP(A4;'C:\Users\Pascal\Google Drive\AVI ADMIN\Klanten\[Klantenbestand.xlsm]Particuliere klanten'!$A:$D;4;FALSE)
Cel A5 word gebruikt om het emailadres door te linken aan de mail
Het onderwerp voor de email moet worden opgebouwd uit : Factuur & factuurnummer, uit facturatie C22

hoop dat het zo beetje duidelijker is :)

Als het goed is zit het voorbeeldbestandje erbij ..
 
Probeer het eens met deze.
Je zal hier en daar misschien iets moeten aanpassen, maar je hebt dan ook zoiets van dit haal je hier en dat haal je daar en die cellen zijn samengevoegd uit dit en dat ????
Dit zorgt gewoon voor fouten.
De naam v/h bestand is bv factuurnummer -1, maar je onderwerp is dan weer het factuurnummer zelf ????
Code:
Sub Stuur_Email()
' Working in Office 2000-2013
    Dim strbody As String, strPath As String
    With Sheets("Facturatie")
        strPath = "C:\Users\Pascal\Google Drive\AVI ADMIN\Klanten\Particuliere Klanten\" & Sheets("Klantenkaart").Range("A7").Value
        .ExportAsFixedFormat 0, strPath & "\" & .Range("E4").Value & ".pdf"
    End With
    strbody = "Geachte " & Sheets("Klantenkaart").Range("A6") & "," & _
              "" & vbNewLine
    With CreateObject("Outlook.Application").CreateItem(0)
        .To = Sheets("Klantenkaart").Range("A5").Value
        .CC = ""
        .BCC = ""
        .Subject = "Factuur" & Sheets("Facturatie").Range("C22").Value
        .Attachments.Add strPath & "\" & Sheets("Facturatie").Range("E4").Value & ".pdf"
        .HTMLBody = strbody & "<br>" & .HTMLBody
        .Display
    End With
End Sub
 
Hij heeft het zelf al helemaal opgelost Rudi. :rolleyes:
 
@ Harry
Bedankt voor de info.:thumb:

En dan zelfs nog met andere cellen dan dat hij hier in z'n vraag aangeeft.
Da's weer een naam om toe te voegen aan mijn No more -lijstje.:evil:
 
Dat bedoel ik maar.;)
 
Nogmaals zoals eerder aangegeven, is het niet mijn intentie geweest om wie dan ook tegen het verkeerde been te schoppen en nogmaals ik waardeer het als mensen andere mensen proberen te helpen. En ja, misschien heb ik dingen niet duidelijk aangegeven en heb niet de kennis die jullie hebben. Maar vond het vervelend om bij een eerste vraag op het forum te maken te krijgen met veelal op een in mijn ogen vervelende manier kritiek te krijgen op zaken die een een beginner veelal niet zal weten. Even op een gewone manier erop wijzen zou veel meer teweeg brengen naar mijn inzien.

@ warmbakkertje bedankt voor je hulppoging zal nog even naar het bestandje kijken die je hebt gestuurd en vergelijken met wat ik heb om zo weer wat bij te kunnen leren.

Verder kan deze vraag afgesloten worden, in ieder geval is het functioneel nu (ik voel me niet zo thuis en gewenst als nieuweling op het forum helaas).

Nogmaals iedereen die getracht heeft me te helpen, bedankt !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan