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

Opgelost PDF mailen

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

xbox360

Gebruiker
Lid geworden
7 nov 2008
Berichten
588
Hoi,
ik had een klein vraagje
omdat de range te groot is mailt hij de pdf in 2 bladen
is het ook mogelijk bepaalde kollomen 1 pdf te maken en deze op 1 blad komt?
het gaat om E30:F30 en M+N+Q30

Code:
Sub MailenPDF()
    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
    
    Bestand = ThisWorkbook.Path & "\" & ActiveSheet.Name & ".PDF"
    Range("B2:Q30").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Bestand
    ActiveSheet.PageSetup.Orientation = xlLandscape
           Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .To = "test@test.nl"
        .Subject = ""
        .Body = ""
        .Attachments.Add Bestand
        .Display [COLOR="#008000"] 'Of .Send[/COLOR]
    End With
End Sub

of misschien de actieve tablad mailen mag ook?

Alvast bedank
 
Wil je een vast E-mailadres gebruiken of er een invoeren als je de pdf gaat mailen

ik neem aan dat je kolommen echt de kolommen bedoelt E, F, M, N en Q
en niet zoals het er nu staat cellen E30, F30, Q30 en kolommen M en N ?
 
Zelf werk ik NIET met outlook
Ik had al een VBA voor het mailen
en eentje voor het maken van een beperkt aantal kolommen naar PDF
Vraagt om naam voor de PDF.
Ik hoop dat het werkt en dat je er iets aan hebt.


Code:
Sub MaakEenEmailMetPDF()
    Dim ws As Worksheet
    Dim tempSheet As Worksheet
    Dim rng As Range
    Dim pdfNaam As String
    Dim emailOntvanger As String
    Dim outlookApp As Object
    Dim outlookMail As Object
    Dim documentenFolderPath As String
    
    ' Vraag om de naam voor de PDF
    pdfNaam = InputBox("Geef een naam voor de PDF:", "PDF Naam")
    
    ' Controleer of een naam is opgegeven
    If pdfNaam = "" Then
        MsgBox "Er is geen naam opgegeven. De procedure wordt geannuleerd.", vbExclamation
        Exit Sub
    End If
    
    ' Instellingen
    Set ws = ActiveSheet ' Gebruik de actieve sheet
    Set tempSheet = Worksheets.Add ' Maak een tijdelijke sheet
    Set rng = Union(ws.Columns("E:F"), ws.Columns("M:N"), ws.Columns("Q:Q"))
    documentenFolderPath = Environ("HOMEPATH") & "\Documents" ' Haal het pad naar de map Documenten op
    pdfNaam = documentenFolderPath & "\" & pdfNaam & ".pdf" ' Stel het PDF-pad in naar de map Documenten met opgegeven naam
    emailOntvanger = "ontvanger@example.com" ' Pas hier het e-mailadres aan
    
    ' Kopieer de gevraagde kolommen naar de tijdelijke sheet
    rng.Copy Destination:=tempSheet.Cells(1, 1)
    
    ' Maak PDF van de tijdelijke sheet
    tempSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfNaam, Quality:=xlQualityStandard
    
    ' Verwijder de tijdelijke sheet
    Application.DisplayAlerts = False
    tempSheet.Delete
    Application.DisplayAlerts = True
    
    ' Email PDF
    Set outlookApp = CreateObject("Outlook.Application")
    Set outlookMail = outlookApp.CreateItem(0)
    
    With outlookMail
        .To = emailOntvanger
        .Subject = "Je PDF-bestand"
        .Body = "Hierbij het gevraagde PDF-bestand."
        .Attachments.Add pdfNaam
        .Send
    End With
    
    ' Opruimen
    Set outlookMail = Nothing
    Set outlookApp = Nothing
    
    MsgBox "PDF gemaakt en e-mail verzonden!", vbInformation
End Sub
 

Bijlagen

het gaat goed tot hij op deze regel een fout geeft

.Attachments.Add pdfNaam
 
Kijk maar eens of dit je bevalt.
Code:
Sub MailenPDF()
    Dim Bestand As String
Bestand = ThisWorkbook.Path & "\" & ActiveSheet.Name & ".PDF"
       With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
     End With
    Range("B2:Q30").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Bestand
     With CreateObject("Outlook.Application").CreateItem(0)
        .To = "test@test.nl"
        .Subject = ""
        .Body = ""
        .Attachments.Add Bestand
        .Display 'Of .Send
    End With
End Sub
 
@xbox360
hmm dat is raar
Heb je mijn file geprobeerd ?
en krijg je daar ook een foutmelding?
 
Mijn Excuses, hier op mijn laptop werkt het wel,maar op de pc van me werk moet ik even kijken hoe ik de path precies kan vinden om die temp pdf te maken,gaat via netwerk
alvast super bedankt
 
@xbox360
Oh dat is dan wel weer raar want ik heb ook de map "temp" op share staan.
Maar ja ik weet ook weer heel weinig van netwerken.

je kunt hiervoor ook heel goed de map "documenten" gebruiken
deze staat meestal ook lokaal.

Ik zal nog even wat zaken aanpassen
zodat je meer vrijheid hebt, van welke kolommen je PDF wilt maken
en of je wilt opslaan in een map specifieke naam etc.
 
De Environ("HOMEPATH") bevat geen driveletter.
Daar zal het dan ergens mis gaan.
Je kan beter Environ("TEMP") gebruiken of wat HSV al deed, de locatie van het actieve Excel document.
 
@edmoor
Klopt op mijn laptop werkt het perfect, maar een collega die het ook zou willen gebruiken lukt het niet op zijn werk ( werken namelijk met teams )
 
Oh jee van TEAMS weet ik helemaal niets STERKTE


Hier heb je een versie die een pdf maakt en de email VBA aanroept
Je kunt kiezen voor opslaan en voor E-mailen
De kolommen staan al klaar maar je kunt ze aanpassen.
Naam voor E-mailen en opslaan wordt gevraagd.

Dan kan er altijd met een tussenstap gewerkt worden.
 

Bijlagen

Laatst bewerkt door een moderator:
Overigens nog geen commentaar op #6 van @xbox360 .
 
Zal op zich prima werken.
Maar het gevaar van het handmatig innemen van een bestandsnaam is dat de gebruiker tekens ingeeft die in een bestandsnaam niet zijn toegestaan.
Daar dien je dan op te controleren.
Ook dien je in dat geval te controleren of het ingegeven email adres syntactisch correct is.
 
@HSV

Yes deze kan ook alleen, werkt perfect ook via teams
ik ga deze me collega laten gebruiken SUPER bedankt
 
@edmoor
Ja daar heb je gelijk in (hahaha daar valt mijn baas ook altijd over)
maar ik vind dat je wel iets zelf moet kunnen.

De invoer van Emailadres kan eenvoudig worden aangepast
Dat had @xbox360 al voor elkaar.
Ik heb het erin gezet omdat ik niet precies weet hoe outlook dit soort zaken geregeld wil zien.

naar de syntax (klusje) ga ik kijken.
 
als je de PDF niet opslaat werkt het wel via teams
Super bedankt ga het alle 2 bekijken van u en HSV
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan