25. februar 2015 - 20:06Der er
11 kommentarer og 1 løsning
væftet PDF fil til mail, hvor stien ligger i en celle generet af et lopslag
Hej eksperter,
Jeg med hjælp fra et par eksperter herinden generet et mail system, som sender mails til række medarbejdere på baggrund af nogle kriterier.
Men jeg kunne godt tænke mig, at der blev vedhæftet et pdf dokument til mailen.
Stien til pdf dokumentet står i en celle udefor hver enkelt medarbejder, og er genereret af et lopslag.
Jeg har prøvet at anvende forskellige koder, men har kun fået det til virke, når jeg skriver stien direkte ind i VBA koden, i stedet for at anvende en variabel, da pdf dokument ikke er det samme til alle medarbejdere.
Jeg lagt begge versioner ind i nedenstående kode, hvor det ene fungere fint - men når jeg gemmer stien i variabel vil det ikke længere fungere. Den version som virker, kan jeg bare ikke bruge, da den vedhæftede fil skifter alt efter, hvilken afdeling de tilhører.
Jeg har lavet også forsøgt at lave 20 forskellige if sætninger, som bruger den bestemte sti, hvis afdelingen = Link variablen - men dette tager for lang tid, når der skal sender over 400 mails.
Håber du hjælpe!!
Mvh
Martin
Private Sub afsendAfBesked()
Worksheets("Mail").Activate Dim modtager As String, linje As String
For ræk = 1 To ActiveCell.SpecialCells(xlLastCell).Row Range("g" & ræk).Activate ' N kolonnen = fejlreg. timer If ActiveCell <> modtager Then SendMail mail, navn, linje modtager = Range("G" & ræk) ' N kolonnen = fejlreg. timer linje = "Dato" & vbTab & vbTab & " Timer" & vbTab & "Aktivitetsnr" & vbTab & "Aktivitet" & vbCr
End If
With ActiveSheet Set navn = ActiveCell Set akt = ActiveCell.Offset(0, 1) Set aktnavn = ActiveCell.Offset(0, 2) Set regt = ActiveCell.Offset(0, 7) Set link = ActiveCell.Offset(0, 8) ' stien ligger i denne celle, og er generet vha at et lopslag. Set bemærkning = ActiveCell.Offset(0, 9) Set mail = ActiveCell.Offset(0, 10) Set dag = ActiveCell.Offset(0, 3)
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
'.Attachments.Add ("link") ' Denne virker ikke, men nedenstående løstning, hvor jeg indsætter stien virker fint. .Attachments.Add ("H:\WindowsProfil\Skrivebord\Vejledning tidsreg\........pdf") ' Virker fint objMail.display 'Instead of .Display, you can use .Send to send the email or .Save to save a copy in the drafts folder
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, xLink modtager = Range("F" & ræk) linje = "Dato" & vbTab & "Aktivitet" & 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 xLink = ActiveCell.Offset(0, 8) Set bemærkning = ActiveCell.Offset(0, 2) Set mail = ActiveCell.Offset(0, 3) Set dag = ActiveCell.Offset(0, -4)
linje = linje & dag & vbTab & aktnavn & vbTab & vbTab & vbTab & regt & vbNewLine End With
Next ræk
Rem sidste modtager sendMail mail, navn, linje, xLink End Sub Private Sub sendMail(mail, navn, linje, xLink) Dim vedhft '<--- 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"
Set vedhft = .Attachments '<--- vedhft = xLink '<--- .Attachments.Add vedhft '<--- End With
Jeg fik det desværre ikke til virke med ovenstående, men lavede en et par if sætninger med de enkelte dokumenter der skulle vedhæftes.. Var lidt tidspresset på outputtet ;)
Men du får rigtig mange tak for hjælpen, beklager det sene svar.
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.