dunque sono partito da questo codice che manda mail a un gruppo di contatti. adattato al mio caso funziona benissimo
- Codice: Seleziona tutto
Sub Invioemail()
Dim OutApp As Object
Dim OutMail As Object
Dim EmailAddr As String
Dim Subj As String
Dim BodyText As String 'FIN QUI E' SONO "DICHIARAZIONI"
' (a)
Set OutApp = CreateObject("Outlook.Application")
''compilazione di un testo standard di accompagnamento 'LA VARIABIE BDT VIENE COMPILATA CON UN TESTO STANDARD
BDT = "Ti invio il risultato Portfolio per l'orientamento."
BDT = BDT & vbCrLf & "Cordiali saluti" & vbCrLf
BDT = BDT & "Rea"
'' (b)
Nominat = Sheets("Scheda").Range("C5").Value 'E' IL NOME DESTINATARIO, A TE NON SERVE
OutFile = "C:\ESITI\" & Nominat & "_ScrSh.jpg" 'NOME DEL FILE ALLEGATO; PER TE SARA' FISSO E NON VARIABILE, es "C:\Document and Settings\pippo\documenti\allegato.doc"
EmailAddr = Range("h5").Value 'INDIRIZZO EMAIL, PRESO DA h5 DEL FOGLIO CORRENTE
Subj = "Invio risultati questionario" 'OGGETTO DELLA MAIL
'
Set OutMail = OutApp.CreateItem(0) 'DA QUI SI CREA E INVIA LA MAIL
With OutMail
.To = EmailAddr
.CC = ""
.BCC = ""
.Subject = Subj
.Attachments.Add OutFile
.Body = BDT
.Display 'or use .send
'.send
End With
' (c)
Set OutMail = Nothing
'
' (d)
Set OutApp = Nothing
Application.Wait (Now + TimeValue("0:00:04"))
Application.SendKeys "%a"
Application.Wait (Now + TimeValue("0:00:04"))
'
'Rename Image files
'Name "C:\ESITI\" & Nominat & "_ScrSh.jpg" As "C:\ESITITX\ " & Nominat & "_ScrSh.jpg"
End Sub
la domanda è quindi.. io ho la mia colonna in cui capisco se la fattura è scaduta o no.
Poi non mi è chiara la soluzione proposta mail si mail no .. trascurando per il momento la personalizzazione che come detto posso far a mano oppure come da te propostosi può ottenere combinando con una parte personalizzata inserita nella mia colonna note.
Può aiutarmi a capire come posso scegliere il destinatario uno per volta?
posso da una colonna nuova far uscire le mail solo di chi ha la fattura scaduta. e il suo codice può aiutarmi a prendere questo range di rivenditori che hanno fatto scadere la fattura.
la domanda precisa è : e se dovessi mandarla a uno solo di questi? Come deve cambiare il codice?
a proposito del nome dei fogli la macro data sul forum funziona sul foglio attivo e quindi no problem.. mentre la mia che gira sotto che parte con il pulsante "contatore" riconta tutte le schede cambiando il nome dei fogli sotto.. mi suggerisce come cambiare il codice per mantenere la funzione di contatore fogli senza cambiare il nome del foglio?
sarebbe il modulo2
- Codice: Seleziona tutto
Sub contatore()
For a = 3 To Worksheets.Count
Worksheets(a).Select
Range("A14").Select
ActiveCell.FormulaR1C1 = a
ActiveSheet.Name = "PC " & a
Next
End Sub
a proposito avevo trovato questa soluzione in giro per internet
- Codice: Seleziona tutto
Sub CambiaNomeFoglio()
Dim Sh As Object
Dim NomeSh As String
Sh = ThisComponent.getSheets(1, 100)
Rem Assegno alla variabile NomeSh il valore della cella E10 del Foglio Attivo
NomeSh = ThisComponent.getCurrentController().getActiveSheet().getCellByPosition(5, 10).String
Rem controlliamo se la cella A1 è compilata e se il nome non è già stato usato
If NomeSh = "" Then MsgBox "Manca il nome del foglio": Exit Sub
If Not Sh.hasByName(NomeSh) Then
ThisComponent.getCurrentController().getActiveSheet().setName (NomeSh)
Else
MsgBox "Nome Foglio già presente"
End If
End Sub
la seconda parte del controllo posso anche trascurarla.. ma la prima parte non funge mi da errore di runtime per mancanza oggetto e con il debug mi segna la riga in figura[img]
host image[/img]