L’invio di posta elettronica utilizzando Outlook in cui il metodo di Invio non riesce

Io uso questo codice per inviare email da Excel:

Sub Mail_workbook_Outlook_1()
'Working in Excel 2000-2013
'This example send the last saved version of the Activeworkbook
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim OutApp As Object
    Dim OutMail As Object

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .to = "[email protected]"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = "Hi there"
        .Attachments.Add ActiveWorkbook.FullName
        'You can add other files also like this
        '.Attachments.Add ("C:\test.txt")
        .Send ' <--------------------------------This is causing troubble
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Il problema è che .Send non è riconosciuto come un oggetto (o un metodo).

Altri comandi (cioè Visualizzare, Salvare).

Credo che questo errore è presente a causa di sistemi di sicurezza sul lavoro. Ho anche provato con CDO e non è che non funziona etere.

Ho creato una cartella di lavoro vuota, salvato come C:\myDir\BlankBook.xlsx e copiato il codice in un modulo di codice, cambiando solo i .to linea per il mio lavoro interno indirizzo. Codice funziona senza problemi per me.
Cambiato il .to linea a mio gmail indirizzo. Il codice ha funzionato bene, di nuovo.
Questo è un bizzarro errore. Si dovrebbe essere in grado di utilizzare l’associazione tardiva, come per il codice, ma consente di provare l’early binding e vedere se l’errore persiste. Puoi provare ad abilitare il riferimento al MS Outlook libreria? Quindi Dim OutApp as Outlook.Application e Dim OutMail as MailItem.
magari puoi postare il codice originale? se si utilizza il codice esatto di cui sopra, non credo che si dovrebbe vedere eventuali errori, perché hai On Error Resume Next vicino alla parte superiore del vostro codice? (altri per favore mi corregga se sbaglio)
Quale versione di Outlook? Provare Debug.Print TypeName(OutMail) o impostare un orologio OutMail: è il tipo di oggetto che si sta creando?

OriginaleL’autore Ole Henrik Skogstrøm | 2013-07-26

2 Replies
  1. 4

    Cambiare .Send per .Display e mettere SendKeys "^{ENTER}" prima della With OutMail linea.

    Grazie! Una bella soluzione 🙂 ho modificato la tua risposta in base a ciò che ha risolto il mio problema. Speranza che è ok per voi?:)
    nessuna preoccupazione, felice che ti sia arrivata ha funzionato alla fine il mio amico 🙂

    OriginaleL’autore

  2. -1

    Provare questo codice.

    Sub Email_ActiveSheet_As_PDF()
    
    'Do not forget to change the email ID
    'before running this code
    
    Dim OutApp As Object
    Dim OutMail As Object
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileFullPath As String
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With
    
    ' Temporary file path where pdf
    ' file will be saved before
    ' sending it in email by attaching it.
    
    TempFilePath = Environ$("temp") & "\"
    
    ' Now append a date and time stamp
    ' in your pdf file name. Naming convention
    ' can be changed based on your requirement.
    
    TempFileName = ActiveSheet.Name & "-" & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
    
    'Complete path of the file where it is saved
    FileFullPath = TempFilePath & TempFileName
    
    'Now Export the Activesshet as PDF with the given File Name and path
    
     On Error GoTo err
    With ActiveSheet
        .ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=FileFullPath, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End With
    
    'Now open a new mail
    
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    On Error Resume Next
    With OutMail
    .To = StrToReceipent
    .CC = StrCCReceipent
    .BCC = StrBCCReceipent
    .Subject = StrSubject
    .Body = StrBody
        .Attachments.Add FileFullPath '--- full path of the pdf where it is saved
        .Send   'or use .Display to show you the email before sending it.
        .Display
    End With
    On Error GoTo 0
    
    'Since mail has been sent with the attachment
    'Now delete the pdf file from the temp folder
    
    Kill FileFullPath
    
    'set nothing to the objects created
    Set OutMail = Nothing
    Set OutApp = Nothing
    
    'Now set the application properties back to true
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    MsgBox ("Email has been Sent Successfully")
    Exit Sub
    err:
        MsgBox err.Description
    
    End Sub

    OriginaleL’autore

Lascia un commento