PDA

View Full Version : [Visual Basic] email sender


Dbz
07-01-2022, 08:00
ciao a tutti ho sviluppato un codice per mandare delle email caricate su un foglio di lavoro excel. Posto il codice:

Dim indirizzo As String
Dim oggetto As String
Dim testo As String
Dim appoutlook As New Outlook.Application
Dim mail As Outlook.MailItem
Dim allegato As String
Dim x As Integer
Dim clienti As Integer
Dim miamail As String

miamail = Range("A1")

clienti = InputBox("inserisci il numero di clienti/fornitori da circolarizzare")

For x = 1 To clienti

Set appoutlook = CreateObject("outlook.application")
Set mail = appoutlook.CreateItem(olMailItem)

allegato = Sheets(1).Cells(x, 5)
indirizzo = Sheets(1).Cells(x, 2)
oggetto = Sheets(1).Cells(x, 3)
testo = Sheets(1).Cells(x, 4)

With mail
.SendUsingAccount = Session.Accounts(miamail)
.To = indirizzo
.Subject = oggetto
.Body = testo
.Attachments.Add (allegato)
.Send
End With

Next x

End Sub



Vorrei evitare di inserire il numero di mail all'inizio, in altre parole vorrei utilizzare il ciclo For Each, però non so come si usa:mc: qualcuno può spiegarmi come fare? grazie

wingman87
07-01-2022, 08:57
Potresti usare un ciclo While true (cioè infinito) e poi uscire quando uno dei campi obbligatori non è valorizzato, ad esempio "indirizzo" con Exit While.

Il foreach lo si può usare su una collezione di oggetti, qui non so se hai modo a priori di estrarre le righe excel (e magari solo quelle valorizzate). Nel caso scriveresti una cosa del tipo
For Each row In rows
...
Next row

Dbz
09-01-2022, 17:13
Potresti usare un ciclo While true (cioè infinito) e poi uscire quando uno dei campi obbligatori non è valorizzato, ad esempio "indirizzo" con Exit While.

Il foreach lo si può usare su una collezione di oggetti, qui non so se hai modo a priori di estrarre le righe excel (e magari solo quelle valorizzate). Nel caso scriveresti una cosa del tipo
For Each row In rows
...
Next row

Grazie! ho risolto