23. februar 2015 - 10:20Der er
6 kommentarer og 1 løsning
Send enkelt mail, med flere oplysninger?
Hej Ekspterter,
Jeg sidder med en masse registreringsdata, hvor der er på forhånd er defineret nogle fejlregistreringer. Disse fejlreg. bliver sendt ud via personlig mail, men hvis en person en måned har 15 fejlreg. får denne person 15 mails, vha. nedenstådende kode.
Mit spørgsmål er, kan man ikke lave en kode, der ligger disse data sammmen, så længe det samme person. Der skal dog listes dato, aktivitet og timeantal....
Således en mail kunne se således ud:
Hej "variabel navn"
Du har fejlreg. på følgende aktivtet(er):
en liste med: DATO - Aktivitet - Timeantal
Hilsen Controllerenheden
Jeg har skrevet følgende kode, som virker - men den sender en mail pr. hver enkel fejlreg.
Håber i kan hjælpe!!
PS: Er ikke "ekspert", men nem til lære!!
Do Until ActiveCell = ""
With ActiveSheet
Set navn = ActiveCell.Offset(0, -7) Set orgenhed = ActiveCell.Offset(0, -10) Set akt = ActiveCell.Offset(0, -5) Set aktnavn = ActiveCell.Offset(0, -6) Set regt = ActiveCell Set link = ActiveCell.Offset(0, 1) Set bemærkning = ActiveCell.Offset(0, 2) Set mail = ActiveCell.Offset(0, 3) Set dag = ActiveCell.Offset(0, -4)
End With
Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0)
With objMail .To = mail .Subject = "Fejlregistering på aktivitetsniveau" .CC = ""
.body = "Hej" & " " & navn & vbNewLine & vbNewLine & "Vi har fundet nedenstående fejlregisterering der er generet efter et kriterie opsat efter din afdeling." _ & vbNewLine & vbNewLine & "Du har registeret dig på følgende" & " " & aktnavn & " " & akt & " med afdeling" & " " & orgenhed & ", dette er sket d. " & dag & ", hvor der er registeret " & regt & " timer." & _ vbNewLine & bemærkning & _ vbNewLine & vbNewLine & "Med venlig hilsen" & vbNewLine & "Controllerenheden"
For ræk = 1 To ActiveCell.SpecialCells(xlLastCell).Row Range("K" & ræk).Activate If ActiveCell.Offset(0, -7) <> modtager Then sendMail mail, navn, linje modtager = Range("F" & ræk) linje = "Dato" & vbTab & vbTab & "Aktivitet" & vbTab & vbTab & "Timer" & vbNewLine End If
With ActiveSheet Set navn = ActiveCell.Offset(0, -7) Set orgenhed = ActiveCell.Offset(0, -10) Set akt = ActiveCell.Offset(0, -5) Set aktnavn = ActiveCell.Offset(0, -6) Set regt = ActiveCell Set link = ActiveCell.Offset(0, 1) Set bemærkning = ActiveCell.Offset(0, 2) Set mail = ActiveCell.Offset(0, 3) Set dag = ActiveCell.Offset(0, -4)
linje = linje & dag & vbTab & vbTab & aktnavn & vbTab & vbTab & regt & vbNewLine End With
Next ræk
Rem sidste modtager sendMail mail, navn, linje End Sub Private Sub sendMail(mail, navn, linje) Set objOutlook = CreateObject("Outlook.Application") Set objmail = objOutlook.CreateItem(0)
With objmail .To = mail .Subject = "Fejlregistering på aktivitetsniveau" .CC = ""
.body = "Hej" & " " & navn & vbNewLine & vbNewLine & "Vi har fundet nedenstående fejlregisterering der er generet efter et kriterie opsat efter din afdeling." _ & vbNewLine & vbNewLine & "Du har registeret dig på følgende:" & vbNewLine & linje & vbNewLine & "Med venlig hilsen" & vbNewLine & "Controllerenheden" End With
Jeg har nu nedenståeden kode, layoutet og outputtet passer perfekt.
Men der bliver oprettet en mail, pr. hver fejl reg., hvor den gerne skulle lave en liste med alle fejl reg. pr. person. således at hvis en person har 5 fejl reg. bliver de listet i kun 1 mail i stedet for 5 mails.
Datasættet er sorteret efter navn, således at en persons fejl registreringerne kommer lige efter hinaden.
For ræk = 1 To ActiveCell.SpecialCells(xlLastCell).Row Range("N" & ræk).Activate ' N kolonnen = fejlreg. timer If ActiveCell.Offset(0, -7) <> modtager Then SendMail mail, navn, linje modtager = Range("N" & ræk) ' N kolonnen = fejlreg. timer linje = "Dato" & vbTab & vbTab & "Aktivitet" & vbTab & vbTab & vbTab & vbTab & "Timer" & vbNewLine End If
With ActiveSheet Set navn = ActiveCell.Offset(0, -7) Set orgenhed = ActiveCell.Offset(0, -10) Set akt = ActiveCell.Offset(0, -5) Set aktnavn = ActiveCell.Offset(0, -6) Set regt = ActiveCell Set link = ActiveCell.Offset(0, 1) Set bemærkning = ActiveCell.Offset(0, 2) Set mail = ActiveCell.Offset(0, 3) Set dag = ActiveCell.Offset(0, -4)
linje = linje & dag & vbTab & vbTab & aktnavn & " " & akt & vbTab & vbTab & regt & vbNewLine End With
Next ræk Rem sidste modtager SendMail mail, navn, linje End Sub
Private Sub SendMail(mail, navn, linje)
Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0)
With objMail .To = mail .Subject = "Fejlregistering på aktivitetsniveau" .CC = "" .body = "Hej" & " " & navn & vbNewLine & vbNewLine & "Vi har fundet nedenstående fejlregisterering der er generet efter et kriterie opsat efter din afdeling." _ & vbNewLine & vbNewLine & "Du har registeret dig på følgende:" & vbNewLine & vbNewLine & linje & vbNewLine & vbNewLine
objMail.display 'Instead of .Display, you can use .Send to send the email or .Save to save a copy in the drafts folder
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.