Ad esempio questa macro:
- Codice: Seleziona tutto
Sub SendF1F2()
Dim shTSend, I As Long, fTAttach As String
Dim oApp As Object, oMail As Object, mDest As String
'
shTSend = Array("Sheet2", "Foglio1") '<<< I Fogli da inviare come allegato, anche piu' di 2
fTAttach = "Allegato_" '<<< Il nome per il file da inviare
mDest = "account@Dominio.ZZ" '<<< destinatario email
'
'Crea file da allegare:
Sheets(shTSend(1)).Copy
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
ActiveSheet.Name = ThisWorkbook.Sheets(shTSend(I)).Name
For I = 1 To UBound(shTSend)
ThisWorkbook.Sheets(shTSend(I)).Copy After:=Workbooks(Workbooks.Count).Sheets(1)
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
ActiveSheet.Name = ThisWorkbook.Sheets(shTSend(I)).Name
Next I
fTAttach = ThisWorkbook.Path & "\" & fTAttach & Format(Now, "yyyy-mm-dd_hh-mm-ss") & ".xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=fTAttach
Application.DisplayAlerts = True
ActiveWorkbook.Close False
'Crea email e invia
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(0)
oMail.To = mDest
oMail.Subject = "Invio non so che cosa"
oMail.Body = "Buongiorno" & vbCrLf & "In allegato il documento di vostra competenza"
oMail.Attachments.Add fTAttach
oMail.Display
' oMail.Send
Application.Wait (Now + TimeValue("0:00:02"))
Set oMail = Nothing
Set oApp = Nothing
End Sub
Va inserito in un modulo standard nel progetto vba del file di partenza.
Le righe marcate <<< vanno personalizzate come da commento.
La macro crea un nuovo file excel contenente i fogli dichiarati, nella stessa directory del file di partenza, gli assegna un nome composto da una radice e dal suffisso in formato yyyy-mm-dd_hh-mm-ss.xlsx, lo salva e poi lo allega alla email.
La macro si completa con l'istruzione Display, che visualizza l'email prima dell'invio manuale.
Quando sei certo del risultato e' ok allora puoi eliminare l'istruzione "Display" e abilitare la "Send" (ora "commentata", quindi disabilitata)
Fai sapere...