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

printen en mailen als pdf met thunderbird

Status
Niet open voor verdere reacties.

Samsung6713

Gebruiker
Lid geworden
24 dec 2019
Berichten
209
Goedeavond,

Ik ben op zoek naar een macro om een pagina te printen naar pdf en vervolgens direct te mailen met behulp van thunderbird.
De macro's die ik tot nu toe gevonden heb werken alleen met outlook.

Verder wil ik de bijlage een naam geven aan de hand van een gegevens uit een cel in de bon (indien mogelijk).
En het onderwerk van de mail aan de hand van gegevens uit 3 verschillende cellen.

Is dat mogelijk?
 

Bijlagen

Code:
Sub mail_thunderbird()
On Error GoTo getout
Dim strAn As String
Dim strBetr As String
Dim strBody As String
Dim strAttPfad As String
Dim strThunderPfad As String
Dim strShell As String
Dim bijlage As String

If Dir("C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe") <> "" Then
strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"""

Else: strThunderPfad = """C:\Program Files\Mozilla Thunderbird\Thunderbird.exe"""
End If
'strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe""" 'eventueel het pad aanpassen

strAn = Range("T2") 'Email adres
  
  If Not strAn Like "*@*" Or Not strAn Like "*.*" Then
MsgBox "Je hebt geen, of geen geldig mailadres ingevuld (cel T2)"
Exit Sub
 End If
strBetr = "Hierbij de Weekstaat"     '"onderwerp"
strBody = "Hallo, " & Range("T3").Value & vbCrLf & vbCrLf & "Hierbij de weekstaat van " & Range("a9").Value _
        & vbCrLf & "Uren als excel file bijgevoegd. " _
        & vbCrLf & vbCrLf & "Groeten: " & Range("c3").Value & vbCrLf

bijlage = (Range("T1").Value & "\" & "Uren " & Range("c3").Value & " " & Range("A9").Value & ".xlsx") 'T1=pad c3=naam a9=datum


strShell = strThunderPfad & _
" -compose """ & _
"to='" & strAn & "'," & _
"subject='" & strBetr & "'," & _
"body='" & strBody & "'" & _
",attachment='" & bijlage & "'" & _
""""

Call Shell(strShell, vbNormalFocus)

  
  Exit Sub
getout:

End Sub
ik gebruik bovenstaande code voor mailen met thunderbird
 
Goedeavond,

Bedankt voor de reacties.
Tot nog toe heeft het nog niet het gewenste effect.
Ik wil geen tabblad of document delen als pdf, maar een specifieke pagina.
Hierbij wil ik de pagina als bijlage aan een mail toevoegen.

Verder vind ik wil ik zelf de mail daadwerkelijk verzenden, dus niet automatisch.
 
Dat is totaal wat anders dan je vraag zoals gesteld in #1.

Je wilt een blad mailen met Thunderbird?
En in welk formaat wil je dat blad dan zien?
Platte tekst?
HTML?
PDF?
 
Laatst bewerkt:
Het doel 1 is pagina 1 uit een bestand mailen naar een klant.
In die pagina staat het mailadres en kan het onderwerp en de berichttekst van de mail uit opgemaakt worden.
Voor zover ik weet is de enige manier om 1 pagina naar pdf om te zetten het printen naar pdf.
Maar de site van rondebruin vermeld alleen het exporteren van een heel bestand of tabblad.

Dus pagina 1 van excel bestand toevoegen als pdf bijlage aan een mail, zonder eerst handmatig printen als pdf, opslaan, mail openen, bijlage toevoegen, enzovoort.

Hierbij wil ik gebruik maken van thunderbird.

Ik hoop dat het een beetje duidelijk is zo, ik snap de verwarring.
 
En welke 3 cellen bevatten dan de informatie voor het samenstellen van de naam voor die PDF?
Voorbeeld:
Code:
Sub print1()
    PDF = ThisWorkbook.Path & "\" & _
          Range("A1") & _
          Range("A2") & _
          Range("A3") & ".pdf"
          
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF
End Sub
 
Laatst bewerkt:
AK1 bevat het mailadres

AL4 het onderwerp van de mail

AL6 de tekst voor de mail

De bestandsnaam zou moeten zijn AC7 icm P4
 
Als dat met Thunderbird moet heb je genoeg aan het voorbeeld van gober in #4 en mijn voorbeeld in #8.
 
Ik heb nu onderstaande code, waarmee de nieuwe mail wordt geopend zonder bijlage.
Nu komt het mailadres, onderwerp en berichttekst niet in de mail, waar zit het fout?
Code:
Sub mailThunderbird()
Dim strTo As String
Dim strBetr As String
Dim strBody As String
Dim strAttPfad As String
Dim strThunderPfad As String
Dim strShell As String
Dim StrAn As String

If Dir("C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe") <> "" Then
strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"""

Else: strThunderPfad = """C:\Program Files\Mozilla Thunderbird\Thunderbird.exe"""
End If

StrAn = Range("ak1")  'Email adres

  If Not StrAn Like "*@*" Or Not StrAn Like "*.*" Then
MsgBox "Je hebt geen, of geen geldig mailadres ingevuld (cel ak1)"
Exit Sub
End If
strBetr = "Hierbij de Weekstaat"     '"onderwerp"
strBody = "Hallo, " & Range("ak6").Value & vbCrLf & vbCrLf & "Hierbij de weekstaat van " & Range("ac7").Value _
        & vbCrLf & "Uren als pdf file bijgevoegd. " _
        

strShell = strThunderPfad & _
" -compose """ & "from" & _
"to='" & StrAn & "'," & _
"subject='" & strBetr & "'," & _
"body='" & strBody & "'"

Call Shell(strShell, vbNormalFocus)

  
  Exit Sub
getout:
       
End Sub
 
Wijzig de strShell eens in dit:
Code:
strShell = strThunderPfad & _
    " -compose " & _
    "to=      " & StrAn & "," & _
    "subject= " & strBetr & "," & _
    "body=    " & strBody

Voor de bodytekst denk ik dat je HTML moet gebruiken.
Dus "<br>" in plaats van vbCrLF.
En # 4 4 ; in plaats van een komma (zonder de spaties er tussen)
 
Laatst bewerkt:
Bedankt, ik heb de code nu als volgt, en dat heeft het gewenste effect.
Code:
Sub mailThunderbird()
Dim strTo As String
Dim strBetr As String
Dim strBody As String
Dim strAttPfad As String
Dim strThunderPfad As String
Dim strShell As String
Dim StrAn As String

If Dir("C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe") <> "" Then
strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"""

Else: strThunderPfad = """C:\Program Files\Mozilla Thunderbird\Thunderbird.exe"""
End If

StrAn = Range("ak1")  'Email adres

  If Not StrAn Like "*@*" Or Not StrAn Like "*.*" Then
MsgBox "Je hebt geen, of geen geldig mailadres ingevuld (cel ak1)"
Exit Sub
End If
strBetr = "Aanvraag opdrachtbon week " & Range("p4").Value '"onderwerp"
strBody = "Beste " & Range("ac7") & "," & "<br>" & "<br>" & "In de bijlage de kosten van week " & Range("p4").Value _
        & vbCrLf & "als pdf file bijgevoegd." _

strShell = strThunderPfad & _
    " -compose " & _
    "to='" & StrAn & "'," & _
    "subject='" & strBetr & "'," & _
    "body='" & strBody & "'"


Call Shell(strShell, vbNormalFocus)

  
  Exit Sub
getout:
       
End Sub


Nu mis ik alleen de bijlage als pdf nog.

Hoe pas ik onderstaande code in in bovenstaande code?

Code:
Sub print1()
    PDF = ThisWorkbook.Path & "\" & _
          Range("A1") & _
          Range("A2") & _
          Range("A3") & ".pdf"
          
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF
End Sub

Bestandsnaam voor pdf mag een willekeurige naam zijn of bijvoorbeeld een combinatie van
N4 & P4 & AC7

Pdf bestand heb ik zelf niet meer nodig en kan na bijvoegen aan mail verwijderd worden.

Het bereik van het gedeelte wat ik wil mailen als pdf is N1 tot AG50 in huidig tabblad.
 
Laatst bewerkt:
Zo:
Code:
    PDF = "C:\Voorbeeld\Bijlage.pdf"
    
    strShell = strThunderPfad & _
        " -compose " & _
        "to=      " & StrAn & "," & _
        "subject= " & strBetr & "," & _
        "attachment= " & PDF & _
        "body=    " & "" & strBody & ""
 
Het probleem is dat de pdf eerst nog gemaakt moet worden aan de hand van het bereik N1 tot AG50. (printpagina 1)
Daarna tijdelijk opgeslagen en een naam gegegeven, en pas daarna kan ik het toch toevoegen?

Hoe maak ik de code zo, dat pagina 1 geprint wordt als pdf, en opgeslagen wordt en die locatie toegevoegd wordt als bijlage?

Na verzenden mag het bestand weer verwijderd worden.

Code:
Sub mailThunderbird()
Dim strTo As String
Dim strBetr As String
Dim strBody As String
Dim strAttPfad As String
Dim strThunderPfad As String
Dim strShell As String
Dim StrAn As String

If Dir("C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe") <> "" Then
strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"""

Else: strThunderPfad = """C:\Program Files\Mozilla Thunderbird\Thunderbird.exe"""
End If

StrAn = Range("ak1")  'Email adres

  If Not StrAn Like "*@*" Or Not StrAn Like "*.*" Then
MsgBox "Je hebt geen, of geen geldig mailadres ingevuld (cel ak1)"
Exit Sub
End If
strBetr = "Aanvraag opdrachtbon week " & Range("p4").Value '"onderwerp"
strBody = "Beste " & Range("ac7") & "," & "<br>" & "<br>" & "In de bijlage de kosten van week " & Range("p4").Value _
        & vbCrLf & "als pdf file bijgevoegd." _
    
    PDF = "C:\Voorbeeld\Bijlage.pdf"
    
    strShell = strThunderPfad & _
        " -compose " & _
        "to=      " & StrAn & "," & _
        "subject= " & strBetr & "," & _
        "attachment= " & PDF & _
        "body=    " & "" & strBody & ""


Call Shell(strShell, vbNormalFocus)

  
  Exit Sub
getout:
       
End Sub
 
Het maken van de PDF staat uitgelegd in #8.
Je mag daar Activesheet wijzigen in de benodigde Range.
 
Code:
Sub print1()
    PDF = ThisWorkbook.Path & "\" & _
          Range("N4") & _
          Range("P4") & _
          Range("AC7") & ".pdf"
          
    ActiveSheet.Range("N1:AG50").ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF
End Sub

Sub mailThunderbird()
Dim strTo As String
Dim strBetr As String
Dim strBody As String
Dim strAttPfad As String
Dim strThunderPfad As String
Dim strShell As String
Dim StrAn As String

If Dir("C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe") <> "" Then
strThunderPfad = """C:\Program Files (x86)\Mozilla Thunderbird\Thunderbird.exe"""

Else: strThunderPfad = """C:\Program Files\Mozilla Thunderbird\Thunderbird.exe"""
End If

StrAn = Range("ak1")  'Email adres

  If Not StrAn Like "*@*" Or Not StrAn Like "*.*" Then
MsgBox "Je hebt geen, of geen geldig mailadres ingevuld (cel ak1)"
Exit Sub
End If
strBetr = "Aanvraag opdrachtbon week " & Range("p4").Value '"onderwerp"
strBody = "Beste " & Range("ac7") & "," & "<br>" & "<br>" & "In de bijlage de kosten van week " & Range("p4").Value _
        & vbCrLf & "als pdf file bijgevoegd." _

 PDF = "C:\Voorbeeld\Bijlage.pdf"
    
    strShell = strThunderPfad & _
        " -compose " & _
        "to=      " & StrAn & "," & _
        "subject= " & strBetr & "," & _
        "attachment= " & PDF & _
        "body=    " & "" & strBody & ""


Call Shell(strShell, vbNormalFocus)

  
  Exit Sub
getout:
       
End Sub

Ik heb de code voor het maken erboven gezet, maar het werkt nog niet.
Er staat: Het document is niet opgeslagen.

Verder ben ik op de manier waarop de code is toegevoegd voor het de bijlage ineens de bodytekst kwijt.
 
De code voor het PDF bestand moet natuurlijk wel in dezelfde Sub staan als het mailen.
Daarnaast staat mijn voorbeeldregel er nog in.
Ook bevat N1 een dubbele punt en dat mag niet in een bestandsnaam.
 
Beste Edmoor,
Bedankt voor je hulp zover!

Ik heb de range nu naar blad1 gezet, en de code voor het pdf bestand in dezelfde sub gezet als mail.

Wat is er nu nog fout in deze code
Code:
 ActiveSheet.Range("Blad1").ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDF

Blad 1 moet het pfd document worden.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan