Avatar billede smads Nybegynder
19. maj 2003 - 12:48 Der er 27 kommentarer og
1 løsning

MultiSelect i liste

Hej igen Eksperter

Jeg skal kunne sende en mail til samtlige personer i en kolonne i en forespørgsel. Personerne ses på en liste, men listen er baseret på en forespørgsel, og så tror jeg at det er nemmere at sende en mail til alle personer som er i forespørgslen end på en listen.

Er der nogen der kan hjælpe?
19. maj 2003 - 12:59 #1
Function SendMail()
Dim Out As Outlook.Application
Dim Post As Outlook.MailItem
Dim rs as ADODB.Recordset

Set Out = CreateObject("Outlook.Application")
Set Post = Out.CreateItem(olMailItem)
Set rs = New ADODB.Recordset
rs.Open "DinForespørgsel",currentproject.connection
do until Rs.EOF
Post.To = Rs![E-Mail adresse fra forespørgslen]
POst.Subject = "Emne"
Post.Body = "Brødtekst"

rs.MOvenext
Post.send

loop
rs.Close
set rs = Nothing
Set Out = Nothing
End Function


Funktionen kræver reference til Outlook og ADO.

NB: Den er ikke afprøvet men blot skrevet ud fra hovedet...!
Avatar billede smads Nybegynder
19. maj 2003 - 13:14 #2
Reference til Outlook? Mener du stien til Outlook?
19. maj 2003 - 13:21 #3
Fra VBA skal du gå i menuen Tools->References og afkrydse Microsoft Outlook Object Library X.0
Avatar billede smads Nybegynder
19. maj 2003 - 13:23 #4
Dumt spørgsmål måske - men skal det også gøres for ADO?
19. maj 2003 - 13:28 #5
Hvis du arbejder med Access 2000 eller XP, så vil den formentlif være der i forvejen. Men ja...den skal være der. Den hedder bare "Microsoft ActiveX Data Objects 3.x Library"
Avatar billede smads Nybegynder
19. maj 2003 - 13:34 #6
Du har ret, den er der i forvejen... Men det virker stadig ikke. Der hvor der står "Post.To = Rs![E-Mail adresse fra forespørgslen]
" skriver jeg bare kolonnen som indeholder min e-mailadresser ikk'?
Avatar billede henrik13 Nybegynder
19. maj 2003 - 13:37 #7
>> thomasjepsen
Krever den vba setning aktivX moduller.
:o)
19. maj 2003 - 13:41 #8
Smads->jo, du skriver navnet på feltet med E-mail-adresserne.

"DinForespørgsel" skal jo selvfølgelig også erstattes med navnet på din forespørgsel.

sætningen rs.Open "DinForespørgsel", CurrentProject.Connection bør nok ændres til:
rs.Open "DinForespørgsel", CurrentProject.Connection,adOpenStatic

Hvilken linie fejler den, hvis du klikker Debug, når den fejler?

Henrik->Dim rs as ADODB.Recordset kræver ADO (ActiveX Data Objects)
Avatar billede henrik13 Nybegynder
19. maj 2003 - 13:50 #9
>> thomasjepsen
Tak for det hurtige svar.
Vh Henrik
Avatar billede smads Nybegynder
19. maj 2003 - 13:51 #10
thomasjepsen: Ja, jeg har ændret navnet på min forespørgsel :)

Når jeg aktiverer min knap står der:
"Procedure declaration does not match description of event or procedure having the same name"

Det du har skrevet i "" skal det stå med eller uden, når jeg skriver min egen forespørgsel?
19. maj 2003 - 13:58 #11
Der skal stå "" omkring forespørgselsnavnet - præcis som i eksemplet i mit første indlæg.
Avatar billede smads Nybegynder
19. maj 2003 - 13:59 #12
Hmmm, det har jeg også gjort, men den vil ikke virke alligevel...??
19. maj 2003 - 14:02 #13
Prøv at indsæt hele koden her (inklusiv Private Sub Knap_Click())
Avatar billede smads Nybegynder
19. maj 2003 - 14:10 #14
Her er den, jeg kunne ikke få lov til at sætte funktionen ind i min 'private sub' så jeg prøvede det her, men det virker jo heller ikke :)

Private Sub cmdSendMail_Click()

Function SendMail()

End Function

Function SendMail()
Dim Out As Outlook.Application
Dim Post As Outlook.MailItem
Dim rs As ADODB.Recordset

Set Out = CreateObject("Outlook.Application")
Set Post = Out.CreateItem(olMailItem)
Set rs = New ADODB.Recordset
rs.Open "qrySearchResult", CurrentProject.Connection, adOpenStatic
Do Until rs.EOF
Post.To = rs![Email Address]
Post.Subject = "Emne"
Post.Body = "Brødtekst"

rs.MoveNext
Post.send

Loop
rs.Close
Set rs = Nothing
Set Out = Nothing
End Function

End Function
19. maj 2003 - 14:23 #15
Prøv denne:

Private Sub cmdSendMail_Click()
Dim Out As Outlook.Application
Dim Post As Outlook.MailItem
Dim rs As ADODB.Recordset

Set Out = CreateObject("Outlook.Application")
Set Post = Out.CreateItem(olMailItem)
Set rs = New ADODB.Recordset
rs.Open "qrySearchResult", CurrentProject.Connection, adOpenStatic
Do Until rs.EOF
POst.Recipients.Add rs![Email Address]
Post.Subject = "Emne"
Post.Body = "Brødtekst"
Post.Display
'Post.Send
rs.MoveNext

Loop
rs.Close
Set rs = Nothing
Set Out = Nothing
End sub
Avatar billede smads Nybegynder
19. maj 2003 - 14:29 #16
Du er bare go' :)

1000 tak for hjælpen!
Avatar billede smads Nybegynder
19. maj 2003 - 14:30 #17
Ren nysgerrighed: Hvad laver den plinger foran Post.Send ('Post.Send)??
Avatar billede smads Nybegynder
19. maj 2003 - 14:38 #18
Glem det - går ud fra at det bare er en kommentar :) Jeg plejer at skrive 'rem:' så jeg kendte det ikke lige...
Avatar billede smads Nybegynder
19. maj 2003 - 14:43 #19
thomasjepsen: Hvis jeg hellere vil have mailadresserne i BCC feltete kan jeg ikke bruge 'Post.BCC.Add rs![Email Address]'. Hvordan klare jeg den?
19. maj 2003 - 14:49 #20
For at få det i BCC skal du skrive:
Post.BCC = rs![Email Address]

Pling'en er kun for at du kunne se hvordan syntaksen var, hvis du ønskede at sende med det samme. Post.Display åbner mailen på skærmen først, hvorefter du selv skal klikke på "Send"
Avatar billede smads Nybegynder
19. maj 2003 - 14:59 #21
Det virker - næsten. Den løber dem alle sammen i gennem, men tager kun den sidste mailadresse. Det er mærkeligt, for det virkede i to-feltet!!?!
19. maj 2003 - 15:18 #22
hmm, ideen er jo, at den sender én ad gangen. Derved står der jo kun én adresse i hver mail.
Avatar billede smads Nybegynder
19. maj 2003 - 15:23 #23
Da jeg brugte 'POst.Recipients.Add rs![Email Address]' sendte den til samtlige adresser på en gang - adskilt af kommaer, så kan jeg bare ikke forstå hvad der er anderledes ved BCC?
19. maj 2003 - 15:34 #24
Det er fordi det er 2 forskellige metoder. De burde virke ens, men det er i virkeligheden din post.recipients.add, som virker forkert (det har jeg oplevet før)

Prøv denne model i steder:

Private Sub cmdSendMail_Click()
Dim Out As Outlook.Application
Dim Post As Outlook.MailItem
Dim rs As ADODB.Recordset

Set Out = CreateObject("Outlook.Application")
Set Post = Out.CreateItem(olMailItem)
Set rs = New ADODB.Recordset
rs.Open "qrySearchResult", CurrentProject.Connection, adOpenStatic
Do Until rs.EOF
Post.BCC = Post.BCC & rs![Email Address] & ";"
Post.Subject = "Emne"
Post.Body = "Brødtekst"
rs.MoveNext
Loop

Post.Display
'Post.Send
rs.Close
Set rs = Nothing
Set Out = Nothing
End sub
Avatar billede smads Nybegynder
19. maj 2003 - 15:40 #25
Den skriver alle mailadresserne i BCC feltet, men uden semikolon - jeg har prøvet at indsætte et mellemrum før og efter ';', men det ændrer ikke noget.
(Du skal selvfølgelig nok få point få det her ekstra arbejde - det var jo ikke med i det oprindelige spørgsmål :) ).
19. maj 2003 - 15:42 #26
Prøv med "," i stedet for ";"

Jeg er nødt til at løbe nu, men vil formentlig vende tilbage i aften - ellers i morgen.
Avatar billede smads Nybegynder
19. maj 2003 - 15:46 #27
Jeg prøver... :)
Avatar billede smads Nybegynder
19. maj 2003 - 15:46 #28
DET VIRKER :)!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester