Gestire Outlook da Excel



  • Excel ed outlook
    di Ggsirico (utente non iscritto) data: 18/04/2009

    Ciao a voi del forum ho una macro che che mi apre una finestra di outlook inserendomi il destinatario ed il testo del body da inviare...da un foglio excel. il problema è che dovrei gestire anche il mittente. difatti la mail dovrebbe partire non dal mio account di posta ma da un indirizzo specifico(..non devo fare spamm...l'indirizzo mail è aziendale) sapete se è possibile? grazie in anticipo x l'eventuale risposta



  • di Mathamos (utente non iscritto) data: 05/05/2009

    Ciao, a me in questo modo funziona...

    (spero sia chiaro )
     
     Dim OutApp As Outlook.Application
        Dim OutMail As Outlook.MailItem
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(olMailItem)
        With OutMail
            .To = "info@brumbrum.it"
            .CC = ""
            .BCC = ""
            .Subject = "SOGGETTO"
            .Body = "Buongiorno," & Chr(13) & "blablabla" & Chr(13) & Chr(13) & "Distinti saluti." & Chr(13) & Chr(13) & "mathamos" & Chr(13)
            .Attachments.Add ActiveWorkbook.FullName //allega foglio di lavoro excel
            
            .Save  //salva il messaggio in Outlook bozze
        End With



  • di Baz (utente non iscritto) data: 05/05/2009

    Ciao mathamos,
    chiedo scusa dell'intromisione, ma siccome mi potrebbe interessare, vorri capire il tuo codice che a me non funziona.

    l'ho messo un una sub ma mi dà errore alla prima riga:
    "outapp as outlook.application"

    dicendomi "tipo definito dall'utente non definito"

    domanda:
    hai aggiunto qualche controllo aggiuntivo?



  • di R (utente non iscritto) data: 05/05/2009

    Ciao baz,
    devi aggiungere i riferimenti ad outlook dall'ide visual basic ->strumenti -> riferimenti -> microsoft outlook ... spunti

    in alternativa puoi utilizzare create object ed evitare l'aggiunta di riferimenti
    eventualmente fai sapere

    trovi anche un esempio nel mio articolo
    "allegare file xps una alternativa ai pdf (prima parte)" sul blog
    saluti
    r






  • di Baz (utente non iscritto) data: 05/05/2009

    Ciao r,
    ho letto il tuo blog ma sinceramente (non credo solo per la fretta) non ho capito molto.

    il tuo codice è leggermente + lungo di quello di mathamos

    potresti cortesemente indicarmi solo la parte che riguarda l'apertura di outlook, magarisenza l'aggiunta di qualche riferimento?



  • di R (utente non iscritto) data: 05/05/2009

    ... forse ti sei persoin un bicchiere d'acqua ...
    qui sotto la routine dell'articolo adattata per essere utilizzata senza allegati alla mail, da notare che htmlbody è uno strumento molto potente, ti consente di preparare testi con formattazioni e aspetto decisamente migliori, puoi però anche passare un semplice testo non convertto come stringa html con limitaziioni sull'aspetto (come ho fatto nelle righe qui sotto)
    l'uso di createobject consente di evitare riferimenti ma non essendoci i riferimenti non riuscirai comodamente a esplorare il modello a oggetti di questa libreriae di usarel'intellisense
    fai sapere se hai problemi
    ciao
    r
     
    Sub Mail_con_allegato_XPS( _
        Temp_file_name As String, _
        Optional sTo As String, _
        Optional sCC As String, _
        Optional sSubject As String, _
        Optional sHtmlBody As String)
        
    'Temp_file_name è il percorso completo
    'del file da allegare
    'i parametri opzionali indicano
    'destinatario
    'in copia
    'oggetto
    'corpo del messaggio
    
    'per maggiori dettagli consultare la
    'guida in linea riguardo l'oggetto
    'MailItem di Outlook Application
    
    Dim oOutApp As Object
    Dim oMail As Object
    
    Const olMailItem As Long = 0
    Const olFormatHTML As Long = 2
    
    'setto gli oggetti applicazione e nuova mail
    Set oOutApp = CreateObject("Outlook.Application")
    Set oMail = oOutApp.CreateItem(olMailItem)
        With oMail
            .To = sTo
            .CC = sCC
            .Subject = sSubject
            .BodyFormat = olFormatHTML
            .HTMLBody = sHtmlBody
            'allego il file
            .Attachments.Add Temp_file_name
            'mostro il messaggio di posta
            'appena creato
            .Display
        End With
        
    'elimino il file xps
    Kill Temp_file_name
    End Sub
    'puoi modificare semplificando ed
    'escludendo il file allegato
    Sub test()
    'per richiamare la routine
    Mail_senza_allegato _
        "robb.men@gmail.com", _
        "robb.men@gmail.com", _
        "Oggetto di prova", _
        "Testo formato html"
    End Sub
    Sub Mail_senza_allegato( _
        Optional sTo As String, _
        Optional sCC As String, _
        Optional sSubject As String, _
        Optional sHtmlBody As String)
        
    Dim oOutApp As Object
    Dim oMail As Object
    
    'costanti outlook
    Const olMailItem As Long = 0
    Const olFormatHTML As Long = 2
    
    'Evitare i riferimenti con CreateObject
    'setto gli oggetti applicazione e nuova mail
    Set oOutApp = CreateObject("Outlook.Application")
    Set oMail = oOutApp.CreateItem(olMailItem)
    
        With oMail
            .To = sTo
            .CC = sCC
            .Subject = sSubject
            .BodyFormat = olFormatHTML
            .HTMLBody = sHtmlBody
            .Display
        End With
    End Sub
    
    
    
    
    
    






  • di Baz (utente non iscritto) data: 05/05/2009

    Ciao r,
    troppo gentile,

    la macro funzia e molto bene!

    avrei ovviamente delle domande:

    1
    è possibile inserire come destinatario anche il ccn

    2
    la richiesta iniziale di "gsirico" era quella di inviare una mail da un'altro account, è possibile?

    3
    non ho capito l'utilizzo del formato html (che ovviamente non conosco) per un discorso estetico, si potrebbe aggiungere la propria firma?

    grazie ancora per la disponibilità



  • di R (utente non iscritto) data: 05/05/2009

    1
    è possibile inserire come destinatario anche il ccn

    vedi sotto ...


    2
    la richiesta iniziale di "gsirico" era quella di inviare una mail da un'altro account, è possibile?

    se lo sapevo avevo già risposto a gsirico ... ma se lui può farlo da outlook si può fare di certo

    3
    non ho capito l'utilizzo del formato html (che ovviamente non conosco) per un discorso estetico, si potrebbe aggiungere la propria firma?

    dipende cosa intendi per firma (una immagine?) comunque si si può fare tutto ... bisogna sapere cosa e provare a cercare come
    non sono un esperto di outlook e del suo modello a oggetti, quando ho avuto bisogno ho sempre trovato una soluzione ma non ripeto cercando ... anche nella guida in linea, apri outlook e vb e giocaci ...
    spero d'essere stato comunque d'aiuto
    saluti
    r
     
    Sub test()
    'per richiamare la routine
    Mail_senza_allegato _
        "robb.men@gmail.com", _
        "robb.men@gmail.com", _
        "robb.men@gmail.com", _
        "Oggetto di prova", _
        "Testo formato html"
    End Sub
    
    Sub Mail_senza_allegato( _
        Optional sTo As String, _
        Optional sCC As String, _
        Optional sCCN As String, _
        Optional sSubject As String, _
        Optional sHtmlBody As String)
        
    Dim oOutApp As Object
    Dim oMail As Object
    
    'costanti outlook
    Const olMailItem As Long = 0
    Const olFormatHTML As Long = 2
    
    'Evitare i riferimenti con CreateObject
    'setto gli oggetti applicazione e nuova mail
    Set oOutApp = CreateObject("Outlook.Application")
    Set oMail = oOutApp.CreateItem(olMailItem)
    
        With oMail
            .To = sTo
            .CC = sCC
            .BCC = sCCN
            .Subject = sSubject
            .BodyFormat = olFormatHTML
            .HTMLBody = sHtmlBody
            .Display
        End With
    End Sub
    
    
    
    
    
    






  • di Baz (utente non iscritto) data: 05/05/2009

    Molte grazie

    ciao