Email met Excel-bijlage automatisch versturen vanuit Excel

  • Onderwerp starter Onderwerp starter TMD
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

TMD

Gebruiker
Lid geworden
27 jul 2015
Berichten
52
Goedemiddag,

Ik werk met Office 2010 en ik ben bezig met het creëren van een geautomatiseerd Excel-bestand dat een totaalbestand automatisch splitst in losse bestanden en deze vervolgens mailt naar de juiste personen. Het is de bedoeling dat dit gebeurt met 1 macro. De bestanden splitsen en onder de juiste naam opslaan is gelukt met de volgende code:

Sub
ActiveSheet.Range("$A$1:$O$239").AutoFilter Field:=8, Criteria1:= _
"1"
Range("A1:H29").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Selection.Columns.AutoFit
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\test\" & Cells(2, 7) & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
End Sub

Ik loop echter vast bij het deel waar het opgeslagen bestand verstuurd moet worden met Outlook. Ik heb onderstaande code gevonden op http://www.snb-vba.eu/VBA_Excelgegevens_mailen.html. De uitleg daarbij beschrijft precies wat ik wil maar het lukt me maar niet om het aan de praat te krijgen. De bedoeling is dat het opgeslagen bestand van hierboven verzonden wordt naar het email adres wat in het bestand staat.

Sub enkel_werkblad_integraal_sturen()
Application.DisplayAlerts = False

c00 = "E:\OF\bestandsnaam." & CreateObject("scripting.filesystemobject").getextensionname(ThisWorkbook.Name)
c01 = ThisWorkbook.FileFormat

ThisWorkbook.Sheets("Blad1").Copy

With ActiveWorkbook
.SaveAs c00, c01
.Close False
End With

With CreateObject("Outlook.Application").createitem(0)
.to = "snb@forums.eu"
.Subject = "example"
.attachments.Add c00
.Send
End With
End Sub

Het eerste gedeelte beschrijft uiteraard wat ik zelf ook al had gemaakt bovenaan. Ik neem aan dat dit dus eruit kan. Ik heb mijn test-bestand met alle codes bijgevoegd.

Ik hoop dat er hier iemand is de me verder kan helpen.

Bekijk bijlage 242989
 
Als je een variabele aanroept, maar die verder niet vult, dan valt er uiteraard ook geen bijlage toe te voegen. Daarnaast kan je code een stuk simpeler en dynamischer. Om te beginnen kun je dit:

Code:
    Range("A1:H29").Select
    Selection.Copy

Vervangen door:
Code:
    Range("A1:H29").Copy

Maar nog vele beter is:
Code:
    Cells(1).CurrentRegion.Copy
Omdat je daarmee het bereik dynamisch houdt.

Maar de echte fout zit dus hier:

Code:
    .attachments.Add c00
Omdat c00 nergens gevuld wordt. Dat had hier gemoeten:
Code:
    c00 = "C:\temp\" & Cells(2, 7) & ".xlsx"
    ActiveWorkbook.SaveAs Filename:=c00, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Zoals je ziet heb ik mijn code opgemaakt met de CODE knop. Graag zelf ook de volgende keer doen :).
 
Hallo Octafish,

Ik heb een andere code gevonden die min of meer doet wat ik wil en waar ik wel uitkom. Ik probeer hier automatisch het emailadres in te laten vullen door onderstaande code maar dat werkt helaas niet. Enig idee hoe ik dit kan oplossen? Daarnaast lijkt het bij deze code ook niet mogelijk om tekst aan het emailbericht toe te voegen.

Code:
Sub enkel_werkblad_integraal_sturen()
    
    ActiveSheet.Range("$A$1:$O$239").AutoFilter Field:=8, Criteria1:= _
        "1"
    Cells(1).CurrentRegion.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Selection.Columns.AutoFit
    Application.CutCopyMode = False
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Test\" & Cells(2, 7) & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
   Application.Dialogs(xlDialogSendMail).Show arg1:="& Cells(2, 9)", arg2:="& Cells(2, 15)"
   ActiveWindow.Close
    
End Sub
 
Wat mankeert er aan de code van snb? Ik heb 'm getest, en werkt perfect. Wel .Display gebruiken i.p.v. .Send omdat je anders de mail niet kunt zien/bewerken.
 
Ik ben sinds twee dagen bezig met VBA en hoewel het nu al niet meer aanvoelt als een oerwoud lukt het me niet om deze code naar mijn eigen wensen aan te passen. Dus het probleem zit hem voornamelijk in de eenvoud. Ik heb wel met de code getest maar krijg het niet voor elkaar.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan