Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Rispondere a delle mail tramite VBA di Excell

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Rispondere a delle mail tramite VBA di Excell

Postdi fulviot » 09/06/16 16:41

Ciao a todos,

scrivo a voi perché già in passato mi avete aiutato e adesso ho un nuovo problema.

Io vorrei fare un tool VBA in excell che mandi una risposta a delle mail prese da outlook.

su internet ho trovato una funzione che mi permette di risponde solamente alle mail che sono selezionate in outlook.

quello che invece vorrei fare io è:
- lancio la funzione di excell
- questa si posiziona su outlook
- si posiziona in una determinata cartella di posta Es. Inbox\pippo\pluto
- per tutte le mail presenti in questa cartella mandare una risposta.
- eventuali condizioni di filtraggio delle mail per il momento non sono importanti

avete qualche suggerimento in merito?

Vi anticipo che le soluzioni proposte su MSDN non mi funzionano.

Grazie 1000
fulviot
Utente Junior
 
Post: 21
Iscritto il: 12/04/16 09:21

Sponsor
 

Re: Rispondere a delle mail tramite VBA di Excell

Postdi fulviot » 10/06/16 11:47

Ciao, ho trovato la soluzione da solo, ve la posto nel caso vi serva.

Sub olReply()

'Dichiarazione Variabili generiche
Dim Folder_Select As String
Dim Oggetto_Select As String
Dim risposta_Select As String

'popolo le variabili sopra
Folder_Select = Foglio1.Cells(4, 4).Value
Oggetto_Select = Foglio1.Cells(5, 4).Value
risposta_Select = Foglio1.Cells(6, 4).Value

'Dichiaro le variabili per la gestione della mail
'per accettarle ho dovuto aggiungere in strumenti\riferimenti la voce "Microsoft outllok XX.X object library"

Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim oReply As Outlook.MailItem
Dim myFolder As Outlook.Folder

'setto le variabili per recuperare i dati
Set objOL = CreateObject("Outlook.Application")
Set myNameSpace = Outlook.GetNamespace("MAPI") ' questo non so a cosa serva, lo ho trovato su internet :D
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 'qui indico quale sia il folder di partenza
Set myFolder = myFolder.Folders(Folder_Select) ' qui indico in quale folder trovare le mail

'inizio a rispondere alle e-mail
For Each objMsg In myFolder.Items
If objMsg.UnRead = True Then
If objMsg.Subject = Oggetto_Select Then
Set oReply = objMsg.Reply
oReply.HTMLBody = risposta_Select & objMsg.HTMLBody
oReply.Display
End If
End If
Next

'Distruggo le variabili
Set objMsg = Nothing
Set objOL = Nothing
Set oReply = Nothing
Set myFolder = Nothing
End Sub
fulviot
Utente Junior
 
Post: 21
Iscritto il: 12/04/16 09:21

Re: Rispondere a delle mail tramite VBA di Excell

Postdi EnricoBanco » 18/07/17 06:37

Ciao fulviot, premesso che sono un neofita in vba e vb, sto divertendomi a cercare di scrivere il codice di "rispondere" e "inoltra" tramite vba excel all'e-mail arrivata in Outlook. Ho letto sul tuo post ("su internet ho trovato una funzione che mi permette di risponde solamente alle mail che sono selezionate in outlook") che hai trovato un codice del genere sul web. Ho cercato ma non l'ho trovato. Puoi darmi gentilmente qualche indicazione? Sto usando Excel 10 e Outlook 10, si aprono con la mascherina gialla. Grazie mille
EnricoBanco
Newbie
 
Post: 4
Iscritto il: 18/07/17 06:29

Re: Rispondere a delle mail tramite VBA di Excell

Postdi Anthony47 » 19/07/17 02:30

Ciao EnricoBianco, benvenuto nel forum.
Temo che fulviot non sia rimasto sintonizzato su questo canale; se vuoi qualche suggerimento di massima allora spiega il processo che vorresti realizzare e ci provero'. Mi interessa anche sapere esattamente quale versione di Office usi e su quale piattaforma (Excel 10 mi fa pensare a Office 2002 per Windows, ma mi sembra un po' vecchiotto).

Se invece vuoi provare in autonomia, cerca su google con le chiavi
Codice: Seleziona tutto
outlook reply excel vba
outlook forward excel vba


Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 14525
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rispondere a delle mail tramite VBA di Excell

Postdi EnricoBanco » 19/07/17 18:29

Grazie mille Anthony per la risposta e per il consiglio mi metto molto volentieri alla scoperta dei codici con le tue indicazioni.
Il processo è il seguente: arriva un'e-mail in Outlook e la macro vba consente di fare o "rispondi a tutti" o "inoltra a tutti".

Poi sto cercando di selezionare un testo da inserire nell'e-mail ma questo dovrei essere in grado ;o) infatti sto facendo alcune prove con il codice "crea e invia e-mail da vba", questa parte del processo infatti non non credo dovrebbe cambiare se si tratta di crea e invia o rispondi/inoltra.

Se ho capito bene, il processo indicato da fulviot fa rispondi e-mail da un folder in Outlook dove sono inserite le e-mail in modo da verificare le e-mail di interesse (con una regola Outlook le potrei spostare) però il processo mi si blocca alla riga in cui setta myFolder:

Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) 'qui indico quale sia il folder di partenza

In D4 ho capito che bisogna mettere qualcosa tipo il path Oulook, ci ho provato ma si blocca. Ho inserito la libreria nel progetto macro ma non va comunque.

Ho visto le caratteristiche del computer:
Microsoft Office 2010
Microsoft Outlook 2010
Windows 7
System type: 64 bit

Grazie mille ;o)
EnricoBanco
Newbie
 
Post: 4
Iscritto il: 18/07/17 06:29

Re: Rispondere a delle mail tramite VBA di Excell

Postdi Anthony47 » 20/07/17 02:59

Hummm.... C'e' un motivo per cui questa automazione pensi di farla all'interno di Excel e non in Outlook? Ad esempio crei in Outlook una macro di VBA_Inoltro e una di VBA_Rispondi e poi crei una "Regola" che come azione abbia "Esegui uno script".
Puoi inoltre avviare le macro tramite comandi standard (es Esegui Macro) o tramite icone e personalizzazioni aggiunte sia alla Barra di accesso Rapido che al Ribbon.

Per quanto riguarda il codice di fulviot, per farlo funzionare ho dovuto modificare la dim di alcuni oggetti come segue:
Codice: Seleziona tutto
'Dim objMsg As Outlook.MailItem
Dim objMsg As Object
'Dim oReply As Outlook.MailItem
Dim oReply As Object
'Dim myFolder As Outlook.Folder
Dim myFolder As Object

Come pure ho modificato questa:
Codice: Seleziona tutto
'Set mynamespace = Outlook.GetNamespace("MAPI") ' questo non so a cosa serva, lo ho trovato su internet :D
Set mynamespace = objOL.GetNamespace("MAPI") ' questo non so a cosa serva, lo ho trovato su internet :D

Pero' io non ho OL2010, e ho provato su OL2003; prossimamente potro' provare su OL2016

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 14525
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Rispondere a delle mail tramite VBA di Excell

Postdi EnricoBanco » 25/07/17 15:58

Grazie mille, ci provo. Gentilissimo.
Grazie per il consiglio, ho visto un sito che contiene codice vario per outlook:
http://www.outlookcode.com/d/code/index
Interessante, cerco anche qui
EnricoBanco
Newbie
 
Post: 4
Iscritto il: 18/07/17 06:29

Re: Rispondere a delle mail tramite VBA di Excell

Postdi EnricoBanco » 25/07/17 17:18

Nel periodo non collegato mi sono messo in cercadi codice sull'argomento. Interessante il sito stackoverflow.

Ma questi codici non mi funzionano, in realtà non danno messaggi di errore a parte uno come ho riportato.

Rispondi a tutti
https://stackoverflow.com/questions/252 ... from-excel
Codice: Seleziona tutto
Sub Test()
Dim olApp As Outlook.Application
Dim olNs As Namespace
Dim Fldr As MAPIFolder
'Dim olMail As Variant
Dim olMail As Outlook.MailItem
Dim i As Integer

Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
i = 1

For Each olMail In Fldr.Items
If InStr(olMail.Subject, "Application for Privilege Leave - Leave ID - Dev-PL-45252-4") <> 0 Then
olMail.Display
olMail.ReplyAll
olMail.ReplyAll.body = bodyMail & vbLF & .body

'Inserisce testo e-mail
For Each oMail in Fldr.Items
    If InStr(olMail.Subject, "mysubject") <> 0 Then
        With oMail.ReplyAll
            .Subject  = oMail.Subject '~~> this is optional
            .Body = "your Body"
            '~~> all other stuff you need your mail to have
            .Display '~~> change to .Send if it is already ok
        End With
    End If
Next
'Inserisce testo e-mail


i = i + 1
End If
Next olMail
End Sub



Inoltra e-mail. Da errore: "While senza Wend"
'https://www.mrexcel.com/forum/excel-questions/262062-how-forward-outlook-e-mail-using-excel-vba-script.html
Codice: Seleziona tutto
Dim OLF As Outlook.MAPIFolder, CurrUser As String
Dim EmailItemCount As Integer, i As Integer, EmailCount As Integer

    Dim appOutlook        As Outlook.Application
    Dim ns                As Outlook.NameSpace
    Dim Inbox             As MAPIFolder
    Dim MoveToFolder      As MAPIFolder
    Dim strSubject        As String
    Dim strSender         As String
   
    Set appOutlook = CreateObject("Outlook.Application")
    Set ns = appOutlook.GetNamespace("MAPI")
    Set Inbox = ns.GetDefaultFolder(olFolderInbox)
     
   SetOLF=GetObject("","Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
   EmailItemCount = OLF.Items.Count
   i = 0: EmailCount = 0
   
   
   While i < EmailItemCount
      i = i + 1
     
          With OLF.Items(1)
          EmailCount = EmailCount + 1
          Mail_subject = .Subject
          Mail_body = .Body
          mail_from = .SenderName
          .UnRead = False
               
          End With



Altra routine che funziona con Outlook 10 e che funziona 'secondo il test eseguito dall'autore. A me non funziona.
'http://windowssecrets.com/forums/showthread.php/156624-Outlook-2010-VBA-Code-to-Forward-Email

Codice: Seleziona tutto
Sub Complete()

' Send Completed Message to support
On Error Resume Next
Dim oApp As Outlook.Application
Dim objFolder As Outlook.MAPIFolder
Set oApp = New Outlook.Application
Set objNS = Application.GetNamespace("MAPI")
Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
Set objFolder = objInbox.Folders("Inbox")
Dim oEmail As Outlook.MailItem

'Require that this procedure be called only when a message is selected
If Application.ActiveExplorer.Selection.Count = 0 Then
    Exit Sub
End If

For Each objItem In Application.ActiveExplorer.Selection
    If objFolder.DefaultItemType = olMailItem Then
        If objItem.Class = olMail Then
            Response = MsgBox("Forward message (" + Item.Subject + ") to Appended Subject")
            Set myForward = objItem.Forward
            myForward.Subject = "APPENDED SUBJECT - " + objItem.Subject + ""
            'myForward.Recipients.Add "John Doe <jdoe@someaddress.com>"
            myForward.Send
        End If
    End If
Next

End Sub



Altro codice
https://www.pcreview.co.uk/threads/how- ... s.2798274/

Codice: Seleziona tutto
Sub ForwardA()
 Dim objMail As Outlook.MailItem
 Set objItem = GetCurrentItem()
 Set objMail = objItem.Forward
objMail.To = ""
 objMail.Display
 Set objItem = Nothing
 Set objMail = Nothing
 End Sub



Codice: Seleziona tutto
Sub ForwardB()
 Dim objMail As Outlook.MailItem
 Set objItem = GetCurrentItem()
 Set objMail = objItem.Forward
objMail.To = ""
 objMail.Display
 Set objItem = Nothing
 Set objMail = Nothing
 End Sub


Codice: Seleziona tutto
Function GetCurrentItem() As Object
 Dim objApp As Outlook.Application
 Set objApp = Application
 On Error Resume Next
 Select Case TypeName(objApp.ActiveWindow)
   Case "Explorer"
      Set GetCurrentItem = _
       objApp.ActiveExplorer.Selection.Item(1)
   Case "Inspector"
      Set GetCurrentItem = _
        objApp.ActiveInspector.CurrentItem
   Case Else
 End Select
 End Function
EnricoBanco
Newbie
 
Post: 4
Iscritto il: 18/07/17 06:29


Torna a Applicazioni Office Windows


Topic correlati a "Rispondere a delle mail tramite VBA di Excell":

configurazione mail
Autore: gabonik
Forum: Software Windows
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti