25. august 2006 - 12:16Der er
3 kommentarer og 1 løsning
Udsend e-mail via makro
Hej
Jeg har et problem med en makro som jeg gerne vil have til at virke lidt anderledes. Makkroen fungerer i dag på den måde at den går ind og udsender mails med nogle vedhæftede filer og i det tilfælde du kan se nedenfor er der 4 filer der vedhæftes. Makroen går ind og læser i regnearket på nogle definerede felter om hvilke filer der skal vedhæftes.
Nu har jeg så fået behov for at udvide denne makro til at sende op til 16 filer og det er heller ikke noget problem, men da ikke alle modtagere skal have det samme antal filer vil jeg jo gerne have muligheden for at blot slette felterne. Men hvis jeg gør det i den nuværende makro melder den fejl og stopper.
Jeg havde forestillet mig noget med at man kunne tjekke om feltet var blankt og hvis det er blankt springer den til næste osv. Så jeg slipper for at lave sub makroer for det antal felter der skal udsendes for.
Makroen ser ud som følger (jeg har dog slettet mailen der sendes med da den er irrelevant for mit spørgsmål.)
Dim olNewMail As Outlook.MailItem For Each c In Selection Set olApp = New Outlook.Application Set olNewMail = CreateItem(olMailItem) Vedhæft1 = c.Offset(0, 3) vedhæft2 = c.Offset(0, 9) Vedhæft3 = c.Offset(0, 15) Vedhæft4 = c.Offset(0, 21) With olNewMail .Recipients.Add c.Offset(0, 1)
"Bare et brev som jeg skriver og som ikke er relevant her"
.Attachments.Add Vedhæft1 .Attachments.Add vedhæft2 .Attachments.Add Vedhæft3 .Attachments.Add Vedhæft4 .Save .Display ' .Send End With
Set olNewMail = Nothing Set olApp = Nothing Next c End Sub
Et forsøg: Dim xSti, kol Sub send() Dim olNewMail As Outlook.MailItem xSti = ActiveWorkbook.Path + "\" 'i min model ligger alle filer i samme mappe
For Each c In Selection Set olApp = New Outlook.Application Set olNewMail = CreateItem(olMailItem) kol = 3
Rem gennemse celler for vedhæftFil (max 16 - start i off-set 3 - spring m/6) For a = 0 To 15 filnavn = c.Offset(0, kol) If filnavn <> "" Then olNewMail.Attachments.Add xSti + filnavn End If kol = kol + 6 Next a
With olNewMail .Recipients.Add c.Offset(0, 1) Rem "Bare et brev som jeg skriver og som ikke er relevant her .Save .Display ' .Send End With
Set olNewMail = Nothing Set olApp = Nothing Next c End Sub
Jeg har prøvet dit script og det virkede ikke umiddelbart på min Excel. Jeg ændrede dog lidt i parametrene og lagde den fulde sti ind i felterne der skulle hentes fra og så virkede det uden problemer.
Den endte med at se ud som følger
Dim xSti, kol Sub Udsendelse_mange_filer() Dim olNewMail As Outlook.MailItem
For Each c In Selection Set olApp = New Outlook.Application Set olNewMail = CreateItem(olMailItem) kol = 3
Rem gennemse celler for vedhæftFil (max 16 - start i off-set 3 - spring m/6) For a = 0 To 15 filnavn = c.Offset(0, kol) If filnavn <> "" Then olNewMail.Attachments.Add filnavn End If kol = kol + 6 Next a
With olNewMail .Recipients.Add c.Offset(0, 1)
"Mit brev"
.Save .Display ' .Send End With
Set olNewMail = Nothing Set olApp = Nothing Next c End Sub
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.