Proposta: Applicazione Excel per l'invio di mail tramite Outlook

Stato
Chiusa ad ulteriori risposte.

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.041
213
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
352
Ciao a tutti SmileForum
Vista l'imbarazzante frequenza con cui vengono fatte richieste di invio mail multiple tramite Outlook, che ne direste di sviluppare un'applicazioncina in Excel che gestisca la cosa?
Tramite una userform, per fare una cosa di minima, si potrebbero inserire un range con i destinatari, uno con i Cc, uno con il nome degli allegati da inserire e un campo per il testo del messaggio. Poi le possibilità di affinamento sono moltissime... Comunque penso che sarebbe carino avere un tool del genere "targato" ForumExcel, ma se credete che sia una sciocchezza ditelo pure che non mi offendo! :;):
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.687
1.733
Como
2011MAC 2016WIN
463
Ciao Enrico,
l'idea non è male ma ... piuttosto che "dare in pasto" un applicativo a chicchessia, a mio avviso, sarebbe più utile e più in linea con lo spirito di condivisione della conoscenza del forum creare un tutorial.
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
4.023
63
office pro 2010
57
non mi sembra affatto una cattiva idea. Però la prenderei con l' intento di creare un piccolo progetto da studiare.
Sarebbe interessante se l' intero progetto avesse una "linea editoriale" ben strutturata:

codice indentato.
variabili utilizzate esplicative.
modularità di implementazione attraverso incapsulamento.
utilizzo delle classi la dove necessario e se necessario.
commenti....

e, prima di tutto questo, diagramma, uno chema...

perché non parti con un immagine -> vedi link -> su come vedresti il form...

magari chiedendo quale componente ti serve... dirigi i lavori...
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
4.023
63
office pro 2010
57
Ciao Enrico,
l'idea non è male ma ... piuttosto che "dare in pasto" un applicativo a chicchessia, a mio avviso, sarebbe più utile e più in linea con lo spirito di condivisione della conoscenza del forum creare un tutorial.
arrivo a postare dopo perché mi sono perso un attimo... ciao Ges... si.. l' idea anche secondo me deve essere incentrata sulal condivisione delle conoscenze ancichè del semplice oggetto in se.. ecco perché ritengo che sarebbe bello che fosse strutturato in un certo modo e, naturalmente, con bei post pieni di spiegazioni.

In questo modo, si, si avrebbe un oggetto in passo a ppaprontari ma sarebbe anche un qualcos adi utile a chi volesse poi avvicinarsi alla programamzione.
Non c'è bisogno che faccia anche il cappuccino ma se quel poco che gli facciamo fare, lo documentiamo a dovere, oltre che costruirlo secondo i canoni della programmazione odierna, chi si cimentasse nello studio, potrebbe sia ampliarlo che correggerlo perchè, è risaputo, che tutti i primi lavori sono sempre pieni di errori :dubbioso:
 

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
4.023
63
office pro 2010
57
Intanto che Klink ha il tempo di farsi vivo comincio con un tassello del processo.

é una funzione che preleva, attraverso Application.FileDialog, tutti gli allegati di cui si ha bisogno... a dire il vero non so se c'è un limite di allegati con le mail. Se non ho commesso errori, si può selezionare l' intero disco del pc Muoio_muoio

La funzione restituisce un array con tutti i percorsi dei vari allegati selezionati.

la selezione dei file, di cartelal in cartella, vengono eseguiti grazie alla reiterazione di application.FileDialog in un ciclo do, dal quale si esce grazie alla funzione msgBox()


quest la procedura
Codice:
Private Function ItemSelezionati() As String()
    Dim uscita() As String
    Dim i As Long
    
    ReDim uscita(0)
    Do
        With Application.FileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = True
            .Filters.Clear
            .InitialView = msoFileDialogViewList
            .Title = "Seleziona allegati"
            .ButtonName = "OK Vai!"
            .Show
            For i = 1 To .SelectedItems.Count
               uscita(UBound(uscita)) = .SelectedItems.Item(i)
               ReDim Preserve uscita(UBound(uscita) + 1)
            Next
        End With
    Loop Until MsgBox("Vuoi selezioanre altri allegati?", vbQuestion + vbYesNo, "Seleziona allegati") = vbNo
    ReDim Preserve uscita(UBound(uscita) - 1)
    
    ItemSelezionati = uscita
End Function
questo l' esempio di utilizzo:

Codice:
Sub prova()
    Dim PercorsoAllegato
    Dim ListaDiPercorsi
    
    ListaDiPercorsi = ItemSelezionati
    
    For Each PercorsoAllegato In ListaDiPercorsi
        Debug.Print a
    Next
End Sub
Naturalmente il tutto è sempre meglio che venga debuggato per benino... io implemento mentre guardo la tele Muoio_muoio


per sapere qualcosina in più si Application.FileDialog, ho scritto qualcosa tempo fa in Imparando Excel & VBA - Tutorial di Excel -> Application.FileDialog (Salva ed apri file e cartelle) non è molto ma contiene i link alle risorse originale della MSDN quindi dovrebbe risultare, nel suo complesso, abbastanza esauriente.
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.041
213
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
352
Ciao a tutti SmileForum
Comprendo benissimo le vostre motivazioni; tuttavia non me ne voglia draco né nessun altro se dico che procedere "a caso" non è una metodologia di lavoro a cui sono interessato. Se uno posta un pezzo, poi segue un altro con la sua spiegazione o magari delle correzioni al codice buttato giù dal primo, è così via... alla fine si sarà investito un sacco di tempo ma cosa si capirà? Nulla. Di certo ci saremo divertiti, ma non pensiamo di poter rinviare il neofita a questa discussione per risolvere i suoi guai...

Facciamo così, visto anche che comunque ho ricevuto solo due (pur gentilissime) risposte: fate finta che non abbia detto nulla, magari è opportuno spostare anche questo thread in sezione "bar sport". Se mai un giorno avrò tempo e voglia butterò giù un progetto (che comunque mi servirebbe anche per lavoro) e lo condividerò. Grazie Saluto_saluto
 

Powerwin

VBA Expert
Expert
17 Marzo 2016
4.512
83
vicino a Milano
2019
96
Io sarei anche interessato al discorso, ma temo di avere tempo solo qualche giorno settimana prossima, in questo periodo tra salute (non ottimale) e impegni di lavoro, sono davvero incasinato, pertanto decidete pure il da farsi tenendo, oppure no, conto di questo mio post
 

Marius44

VBA Expert
Moderatore
Expert
9 Settembre 2015
5.833
83
75
Catania
Excel2010
163
Ciao
E' una proposta interessantissima. Non sono d'accordo con Enrico quando parla di abbandonare.

Vorrei implementare, se posso, quanto detto al post #7 in questo modo:
Enrico traccia un progetto, possibilmente suddiviso in più parti.
Chi ne ha voglia, tempo, capacità suggerisce qualcosa per ciascuna parte.
Enrico rimane impegnato ad assemblare, correggere, adattare i vari suggerimenti (codice, formule, Form e quant'altro).

Ciao a tutti,
Mario
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.687
1.733
Como
2011MAC 2016WIN
463
Ciao,
comunque possiamo provarci.

Provo a buttare giù qualche spunto sugli obiettivi del progetto:

1) il file excel da usare come programma deve essere un file terzo rispetto agli altri files interessati

2) deve poter comunicare con un client di posta (Outlook e anche altri)

3) deve contenere i campi per l'oggetto, il destinatario ecc.

4) deve poter avere la possibilità di allegare dei files di varia estensione (PDF, WORD. ecc.)
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.041
213
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
352
E va bene, proviamoci SmileForum
Io un'idea del wizard l'ho buttata giù, moooolto alla buona e con alcune idee ancora poco chiare su come implementare le funzionalità. Vi allego comunque il progetto che ha già qualcosa di funzionante (navigazione tra le pagine, importazione destinatari), così mi dite cosa ne pensate.

Concordo con tutti i punti elencati da ges, ciò che non ho ancora chiaro in mente è se abbia senso usare un wizard (che comunque ti limita nelle cose che puoi fare) o lasciare all'utente la compilazione del foglio excel su cui si basa l'invio (cosa che complica molto l'utilizzo e dà meno garanzie di controllo errori). Beh, avremo modo di parlarne Saluto_saluto
 

Allegati

  • Like
Reactions: Arale

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.687
1.733
Como
2011MAC 2016WIN
463
Ciao Enrico, mi sembra un buon inizio! SmileForum
 

Marius44

VBA Expert
Moderatore
Expert
9 Settembre 2015
5.833
83
75
Catania
Excel2010
163
Bravo Enrico, veramente un ottimo lavoro (altro che inizio...)
concordo pienamente con ges.

Ciao,
Mario
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.041
213
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
352
Grazie, ormai faccio UserForm anche nel sonno (e quasi non scherzo!) GiroOcchi:CheGoduria:

Le cose più difficili da progettare e implementare, per come la vedo io:
1) la gestione di più destinatari per singola mail
2) l'associazione degli allegati ai messaggi (se diversi per ciascun messaggio, come sarà quasi sempre)


L'alternativa al wizard faccio-tutto-io, forse anche più interessante, sarebbe (sempre per come l'ho pensata io):

1) predisporre un foglio di excel (magari in formato tabella) da preparare PRIMA di avviare il wizard con:
_a) Colonna destinatari (da popolare con indirizzi già puliti e separati da ";" in caso di più destinatari per messaggio)
_b) Colonna Cc (idem)
_c) Colonna Ccn (idem)
_d) Colonne allegati (prevederne una decina, all'interno delle quali andrà scritto il percorso completo del file)
(tutte le celle dei destinatari, per esempio, potrebbero avere un evento BeforeDoubleClick che lancia la finestra di dialogo per scegliere gli allegati)
2) avviare il wizard che fa un riepilogo di tutto, permette di impostare oggetto e testo dei messaggi, mostra un'anteprima ed esegue l'invio massivo.

questa seconda modalità di lavoro permetterebbe una più facile gestione dei destinatari e degli allegati per chi ha necessità particolari sugli elenchi o è in grado di generare automaticamente i nomi degli allegati, ad esempio. E' un po' più da "power user" ma potrebbe essere l'unica soluzione per personalizzare fino in fondo gli invii... :dubbioso:
 
  • Like
Reactions: Arale

dracoscrigno

CioccaPiatti & VBA Expert
Expert
1 Maggio 2016
4.023
63
office pro 2010
57
Ciao a tutti SmileForum
Comprendo benissimo le vostre motivazioni; tuttavia non me ne voglia draco né nessun altro se dico che procedere "a caso" non è una metodologia di lavoro a cui sono interessato...
:occhispalancati:

non mi sembra affatto una cattiva idea. Però la prenderei con l' intento di creare un piccolo progetto da studiare.
Sarebbe interessante se l' intero progetto avesse una "linea editoriale" ben strutturata:

codice indentato.
variabili utilizzate esplicative.
modularità di implementazione attraverso incapsulamento.
utilizzo delle classi la dove necessario e se necessario.
commenti....

e, prima di tutto questo, un diagramma, uno schema...

perché non parti con un immagine? -> vedi link -> su come vedresti il form...

magari chiedendo quale componente ti serve... dirigi i lavori...
sarà stati gli errori ortografici a far intendere altro.
 
G

gibra

Guest
Ho dimenticato di inserire il controllo sull'esistenza di Outlook.

Basta aggiungerlo nell'UserForm_Initialize()

Codice:
Private Sub UserForm_Initialize()
    
    Me.mpgWizard.Value = 0
    Me.lblNCurrDest = cIndirizzi.Count

    [COLOR=#008000]' controllo esistenza Outlook[/COLOR]
    Dim oApp As Object
    Set oApp = CreateObject("Outlook.Application")
    [COLOR=#008000]Rem Se Outlook non è installato disabilito il pulsante[/COLOR]
    If oApp Is Nothing Then
        cmdImportaIndirizziOutlook.Enabled = False
    End If
    Set oApp = Nothing
End Sub
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
21.687
1.733
Como
2011MAC 2016WIN
463
Sono postate alcune soluzioni che pur pertinenti restano "sganciate" dal prototipo che ha presentato Enrico.

Quindi, riprendendo il consiglio di Draco
... chiedendo quale componente ti serve... dirigi i lavori...
direi di procedere così:

Enrico ha postato un buon lavoro che però è incompleto in alcuni punti ed è migliorabile, ora, Enrico "dirige i lavori" e quindi prende in esame un componente per volta del suo progetto e chi di noi è disponibile propone come implementarlo.

Che ne dite?
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.041
213
42
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
352
Ciao a tutti, i vostri contributi sono tutti molto interessanti.
Come dice ges, credo che sia opportuno che qualcuno faccia da collettore di tutti questi spunti e li convogli in un progetto organico. Io mi prendo questo compito come è giusto che sia, essendo stato il promotore del progetto; vi chiedo solo un po' di pazienza perché non tutti i giorni ho tempo di seguirvi. Mi farò vivo quanto prima con i nuovi progressi SmileForum
Intanto vi chiedo un parere sul post #14 per farmi un'idea su come procedere
 
  • Like
Reactions: Arale
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!