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

Macro omzetten naar pdf en emaillen vanuit excel

Status
Niet open voor verdere reacties.

getyours

Gebruiker
Lid geworden
4 sep 2007
Berichten
78
Beste,

Ik ben via dit forum goed op weggeholpen naar het vinden van een macro voor het verzenden van email in excel.

Ik heb voor verschillende productie afdelingen formulieren gemaakt voor de overdracht welke na invullen verzonden kunnen
worden naar diverse personen. Ik zou graag willen dat het excel bestand je eerst wordt omgezet naar pdf en dan automatisch verstuurt wordt.
Het kan zijn dat ik bij ronddebruin.nl er overheen heb gekeken. Misschien een van jullie een aanvulling heeft.

Het geheel moet dus vanuit excel gebeuren, op rondebruin.nl staat wel uit gelegd hoe er een pdf rapport wordt gemaakt
maar deze moet je dan weer zelf versturen vanuit outlook.

Bekijk bijlage Overdracht form ontvangst concept.xlsm


mvg
 
Van Ron z'n voorbeelden kan je veel leren maar ze zijn vaak wel erg uitgebreid. Niks mis mee maar ook niet altijd nodig. Voor het opslaan van je sheet als PDF en deze vervolgens te mailen heb je voldoende aan dit:

Code:
Private Sub CommandButton1_Click()
    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
    
    Bestand = Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
    ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=Bestand
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "iemand@bedrijf.nl"
        .CC = ""
        .BCC = ""
        .Subject = "Dit is het onderwerp"
        .Body = "Bij deze het bestand"
        .Attachments.Add Bestand
        .Send
    End With
    Kill Bestand
End Sub
 
Laatst bewerkt:
Beste Edmoor,

Je code doet wat ik voor ogen heb.
FF nog twee aanvullende vragen.

Als ik deze ".Message = Range("A1:J52") & "" & "in PDF Format" code er tussen zet krijg ik een fout melding.

Ik zou graag alleen een range willen uitprinten.

Is het mogelijk om het opslaan, verzenden en printen in een macro te schrijven.

mvg
 
Wat bedoel je met .Message?
 
.message komt uit een andere code.

Het eind doel van het macro zou
een range moeten versturen en printen en eventueel opslaan.

Mvg
 
Opslaan als PDF is geen probleem, het printen ook niet.
Wil je die range als platte tekst of als HTML?
In het laatste geval ziet het email bericht er net zo uit als het Excel blad.
 
@edmoor,

ik denk dat TS een selectie wil printen naar PDF (via b.v. PDFCreator) en die PDF wil verzenden i.p.v. een heel blad als PDF op te slaan.
 
Denk ik ook, maar het kan allemaal dus ik wacht zijn wensen even af :)
 
Beste,

Ik wil dat er van het excel-sheet een Range("A1:J52") uitgeprint en verzonden wordt.
Het te verzenden bestand moet in pdf. Het printen maakt niet zoveel uit enige verschil
is dat ik bij het uitprinten in excel de dropdownlist niet terug zie op de afdruk.

mvg
 
Volgens mij heb je hier dan voldoende aan:
Code:
Private Sub CommandButton1_Click()
    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
    
    Bestand = Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
    Range("A1:J52").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=Bestand
    
    Range("A1:J52").PrintPreview [COLOR="#008000"]'Of .PrintOut[/COLOR]
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "iemand@bedrijf.nl"
        .CC = ""
        .BCC = ""
        .Subject = "Dit is het onderwerp"
        .Body = "Bij deze het bestand"
        .Attachments.Add Bestand
        .Display [COLOR="#008000"]'Of .Send[/COLOR]
    End With
    Kill Bestand
 
Wederom bedankt,

Het verzenden en printen werk nu heb het wel een kleine beetje aangepast.

Code:
Sub pdf_verzenden_outlook()

    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
     
    Bestand = Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
    Range("A1:J52").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=Bestand

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        .to = "getyoursit@gmail.com"
        .CC = ""
        .BCC = ""
        .Subject = "Dit is het onderwerp"
        .Body = "Bij deze het bestand"
        .Attachments.Add Bestand
        .Send
    End With
    
    Range("A1:J51").Select
    Selection.PrintOut Copies:=1, Collate:=True

Kill Bestand

End Sub

Nu het laatste stukje nog en dit is het bestand opslaan als:

Cell B1 = Datum
Cell B2 = Ploeg Data komt uit dropdown keuze lijst
Cell B3 = Dienst Data komt uit dropdown keuze lijst

Het bestand wordt dan opgeslagen wat er in B1 (getyped wordt), en de keuzes die in B2 en B3 gedaan worden.

Deze code kwam ik dit forum tegen, ik snap alleen niet hoe ik de opslag locatie kan aangeven en hoe ik de
bestandsnaam kan laten bepalen door B1,B2 en B3.

Code:
Sub opslaanals ()
Dim strFileName As Variant
  Dim strPath As String
  
  strFileName = Range("B1").Value
  strFileName = Application.GetSaveAsFilename(InitialFileName:=strPath & strFileName, _
                                              FileFilter:="Excel Files (*.xlsm), *.xslm", _
                                              FilterIndex:=1, _
                                              Title:="Kies de juiste map en pas eventueel de bestandsnaam aan!")
  If strFileName = False Then
    MsgBox "Oh oh... je hebt niet opgeslagen! "
  Else
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs FileName:=strFileName
    MsgBox "Gelukt!  Opgeslagen als: " & strFileName
  End If
    
    Kill Bestand
    
End Sub

mvg
 
Zoiets:
Bestand = Environ("TEMP") & "\" & Range("B1").Value & Range("B2").Value & Range("B3").Value & ".pdf"
 
Laatst bewerkt:
Beste Edmoor,

Waar plaats ik jou code?
Als ik deze vervang voor de regel " bestand" dan moet nig steeds zelf de bestandsnaam ingevoerd worden.

Mvg
 
hou het simpel:

Code:
Sub pdf_verzenden_outlook()
    Range("A1:J52").ExportAsFixedFormat 0 ,Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"

    with CreateObject("Outlook.Application").CreateItem(0)
        .to = "getyoursit@gmail.com"
        .Subject = "Dit is het onderwerp"
        .Body = "Bij deze het bestand"
        .Attachments.Add Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
        .Send
    End With
    
    Range("A1:J51").PrintOut
End Sub
 
Beste Edmoor,

Waar plaats ik jou code?
Als ik deze vervang voor de regel " bestand" dan moet nig steeds zelf de bestandsnaam ingevoerd worden.

Mvg


Dat kan niet.
Het is uiteraard een voorbeeld voor een wijzing in de code die ik eerder plaatste.
Dus niet voor de laatste code die je zelf plaatste.
 
Tot nu toe bedankt ik ben een eind opgeschoten met jullie tips.

Hoe zou ik het voor elkaar kunnen krijgen als het bestand reeds bestaat deze opgeslagen wordt met aan het eind _versie 2
en dat er geen bestanden open blijven staan, dus dat aan het einde van de macro alle bestanden afgesloten zijn en niet open blijven staan op het bureau blad.


Code:
Sub Opslaan_verzenden_printen()

Private Sub Sub Opslaan_verzenden_printen_outlook()

    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
     
    Bestand = Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
    Range("A1:J48").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=Bestand
    

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        '.To = ""
        '.CC = ""
        .BCC = ""
        .Subject = ""
        .Body = ""
        .Attachments.Add Bestand
        .Send
    End With
    
    Range("A1:J48").Select
    Selection.PrintOut Copies:=1, Collate:=True
    
    Kill Bestand
    
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ActiveSheet.Range("B2").Value & " " & Range("B3").Value & " " & Range("B1").Value & " " & Format(Now, "hh-mm"), FileFormat:=52
    
End Sub

Alvast bedankt
 
Laatst bewerkt:
Ik heb het probleem inmiddels op gelost.

Ingevulde overdracht formulier wordt, verzonden per email in pdf formaat, geprint en opgeslagen en daarna afgesloten.
Dubbele documenten worden voorkomen doordat er een tijd aan de documenten gekoppeld zit.
Het blanco overdracht formulier wordt weer geopend leeg gemaakt en opgeslagen gereed voor de volgende gebruiker.

Topic mag van mij gesloten worden.

mvg

Code:
Sub pdf_verzenden_outlook()

    Dim Bestand As String
    Dim OutApp As Object
    Dim OutMail As Object
     
    Bestand = Environ("TEMP") & "\" & ActiveSheet.Name & ".pdf"
    Range("A1:J48").ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:=Bestand
    

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    With OutMail
        '.To = "test@test.com"
        '.CC = ""
        .BCC = ""
        .Subject = "test"
        .Body = "test"
        .Attachments.Add Bestand
        .Send
    End With
    
    Range("A1:J48").Select
    Selection.PrintOut Copies:=1, Collate:=True
    
    Kill Bestand
    
    ActiveWorkbook.SaveAs "E:\test\" & ActiveSheet.Range("G2").Value & " " & ActiveSheet.Range("B2").Value & " " & ActiveSheet.Range("B3").Value & " " & ActiveSheet.Range("B1").Value & " " & Format(Now, "hh-mm"), FileFormat:=52
    With ActiveWorkbook
      
    Workbooks.Open ("E:\test\Overdracht Formulier Ontvangst Blanco.xlsm")

    Call Wis_inhoud_werkblad
    
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    ActiveWorkbook.Close
    
    End With
    
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan