E-mail verzenden access.

Status
Niet open voor verdere reacties.

fire746

Gebruiker
Lid geworden
12 jul 2012
Berichten
57
Hallo,

Ik gebruik volgende code om E-mail te versturen in access.

Code:
Private Sub Knop802_Click()
On Error GoTo ErrorHandler
  Me.Dirty = False
DoCmd.OpenReport "Rport Werkorders", acViewPreview, , "[o_Opdracht ID]= " & Me.[o_Opdracht ID]
DoCmd.SendObject acSendReport, "Rport Werkorders", acFormatPDF, , , , "Werkorder", "Wo ,"
DoCmd.Close acReport, "Rport Werkorders", acSaveNo
Exit_Naam_Click:
MsgBox "De Werkorder is met succes verzonden."
Cleanup:
    Exit Sub
ErrorHandler:
  Select Case Err.Number
    Case 2501
      MsgBox "Email-bericht is geannuleerd."
    Case Else
      MsgBox Err.Number & ": " & Err.Description
  End Select
  Resume Cleanup
End Sub

Dit werkt prima, alleen wordt de Mail dan in postvak uit gezet en als ik outlook dan opstart wordt de mail verzonden.
Iemand een oplossing zodat dit automatisch gaat zonder eerst outlook te moeten starten.
 
Ja, gebruik een Outlook sessie. Het kan ook een instelling zijn in je Outlook, dat hij niet automatisch verzend. Ik heb er zelf in ieder geval nooit problemen mee gehad, al gebruik ik dus SendObject nooit.
 
Wat iig wel werkt voor direct verzenden is Outlook op de achtergrond open hebben staan (wat de meesten sowieso al doen).
 
Dan laat je toch bij het opstarten van Access meteen op de achtergrond Outlook opstarten?
Als dit toch al werkt... waarom zou je er dan nog meer energie in willen steken?
Dit werkt prima, alleen wordt de Mail dan in postvak uit gezet en als ik outlook dan opstart wordt de mail verzonden.
Sluit ook aan bij de opmerking van Johgs :
Wat iig wel werkt voor direct verzenden is Outlook op de achtergrond open hebben staan (wat de meesten sowieso al doen).
 
Laatst bewerkt:
Bedankt voor de antwoorden.
Maar outlook op de achtergrond laten draaien is geen optie.
@route99

Hoe laat ik outlook opstarten samen met Access?
 
Iets als: Laad bij het opstarten meteen een module die Outlook laat opstarten?
 
Iets als: Laad bij het opstarten meteen een module die Outlook laat opstarten?
Onzinnige tip; als je Outlook hebt, kun je makkelijk een Outlook sessie opstarten met:
Code:
Dim appOutlook as Application
Dim mailOutlook as Outlook.MailItem

Set appOutlook = CreateObject(“Outlook.Application”)
Set MailOutlook = appOutlook.MailItem
With MailOutlook
...
End With
Set appOutlook = Nothing
En bij de puntjes bouw je dan de mail op.
Dan heb je Outlook alleen draaiend als je hem nodig hebt.
 
Oke ik heb bovenstaande code ingevoerd zie beneden

Code:
Private Sub Knop102_Click()
On Error GoTo ErrorHandler
Dim appOutlook As Application
Dim mailOutlook As Outlook.MailItem

Set appOutlook = CreateObject("Outlook.Application")
Set mailOutlook = appOutlook.[COLOR="#FF0000"]MailItem[/COLOR]
With mailOutlook

Me.Dirty = False
DoCmd.OpenReport "Rapport redplan", acViewPreview, , "[Nummer reddingsplan:]= " & Me.[Nummer reddingsplan:]
DoCmd.SendObject acSendReport, "Rapport redplan", acFormatPDF, , , , "Rapport redplan", "Hallo, zie Bijlage."
DoCmd.Close acReport, "Rapport redplan", acSaveNo
Exit_Naam_Click:
MsgBox "Het redplan is met succes verzonden."
Cleanup:
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 2501
MsgBox "Email-bericht is geannuleerd."
Case Else
MsgBox Err.Number & ": " & Err.Description
End Select
Resume Cleanup
End With
Set appOutlook = Nothing
End Sub

Nu krijg ik de foutcode: kan de methode of het gegevenslid niet vinden.
MailItem is dan gearceerd in de code rood gemaakt.
Enig idee wat ik fout doe
 
Heb je de Outlook bibliotheek aangezet? Dat is met deze methode wel nodig. Er kan ook best een foutje in de code zitten, is een beetje uit het hoofd neergepend. Ik zal zo de juiste versie opzoeken!
 
bedankt voor de sneller reactie

wat bedoel je met bibliotheek aanzetten.
 
Anders.. 1 klikje en Outlook is aan en 1 klikje Outlook is uit....
Onzinnige tip; als je Outlook hebt, kun je makkelijk een Outlook sessie opstarten met:
Dat zien we nu al dat het makkelijk is....

Het is duidelijk een luxe probleem....
 
Je moet, als je externe programma's aanroept, de bibliotheek daarvan aanzetten via <Extra>, <Verwijzingen>. (in het vba venster). In jouw geval dus de Microsoft Outlook bibliotheek, want je gaat met Outlook commando's aan de slag. De code zou zo moeten werken, ook al zit er nog geen email adres in waar de mail naar toe moet. Dat vang ik nu dus met een Inputbox af:
Code:
Private Sub Knop102_Click()
Dim appOutlook As Application
Dim mailOutlook As Outlook.MailItem
Dim sFile As String
    
    On Error GoTo ErrorHandler
    sEmail = InputBox("Typ het email adres.", "Email adres", "mailme@stupid.com")
    sFile = CurrentProject.Path & "\Rapporten\" & Format(Date, "yyymmdd_hhmm", 2, 2) & ".pdf"
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, sFile
    Set appOutlook = CreateObject("Outlook.Application")
    Set mailOutlook = appOutlook.CreateItem(olMailItem)
    With mailOutlook
        .BodyFormat = olFormatRichText
        .To = sEmail
        .Subject = "Hallo, zie Bijlage."
        .HTMLBody = "Hier de tekst van je mail. <br> <br> Met regeleindes voor de volgende regel."
        .Attachments.Add sFile
        .Display
        ''.Send
    End With
    MsgBox "Er is een mail gestuurd naar " & Me.Email_Address & " met " & iTeller & " bijlagen."
    Set appOutlook = Nothing
    Exit Sub

ErrorHandler:
    Select Case Err.Number
        Case 2501
            MsgBox "Email-bericht is geannuleerd."
        Case Else
            MsgBox Err.Number & ": " & Err.Description
    End Select
End Sub
 
Bedankt ik ga het zo eens proberen.
laat wel weten of het gelukt is.
 
Ik heb de code van jou ingevoerd.
Code:
Private Sub Knop102_Click()
Dim appOutlook As Application
Dim mailOutlook As Outlook.MailItem
Dim sFile As String
    
    On Error GoTo ErrorHandler
    sEmail = InputBox("Typ het email adres.", "Email adres", "mailme@stupid.com")
    sFile = CurrentProject.Path & "\Rapporten\" & Format(Date, "yyymmdd_hhmm", 2, 2) & ".pdf"
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, sFile
    Set appOutlook = CreateObject("Outlook.Application")
    Set mailOutlook = appOutlook.[COLOR="#FF0000"]CreateItem[/COLOR](olMailItem)
    With mailOutlook
        .BodyFormat = olFormatRichText
        .To = sEmail
        .Subject = "Hallo, zie Bijlage."
        .HTMLBody = "Hier de tekst van je mail. <br> <br> Met regeleindes voor de volgende regel."
        .Attachments.Add sFile
        .Display
        ''.Send
    End With
    MsgBox "Er is een mail gestuurd naar " & Me.Email_Address & " met " & iTeller & " bijlagen."
    Set appOutlook = Nothing
    Exit Sub

ErrorHandler:
    Select Case Err.Number
        Case 2501
            MsgBox "Email-bericht is geannuleerd."
        Case Else
            MsgBox Err.Number & ": " & Err.Description
    End Select
End Sub

En ik krijg de zelfde fout: kan de methode of het gegevenslid niet vinden.
Rode tekst in de code is gearceerd.
Enig idee hoe dit kan.
 
En je weet zeker dat de bibliotheek Microsoft Outlook # is aangevinkt?
 
Hallo OctaFish,

Heb je al enig idee waarom ik de fout melding krijg.
 
Ja; als ik er vanuit mag gaan dat de db die je in de andere vraag hebt staan dezelfde code bevat.
 
Dan zal ik de code in die db aanpassen. Kun je dit draadje denk ik wel sluiten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan