Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione di dati
Per facilitare la comunicazione, ho utilizzato uno strumento di traduzione. Ti prego di ignorare eventuali errori linguistici o grammaticali. Grazie per la comprensione.
Buongiorno @Giuseppe Moschella
Grazie per aver pubblicato la tua domanda nel forum Microsoft Q&A.
La risposta è: Sì, è assolutamente possibile configurare Excel per inviare automaticamente un’email quando il livello di inventario raggiunge un determinato valore.
Sebbene una funzione standard di Excel (come IF o VLOOKUP) non possa inviare email direttamente, puoi ottenere questa automazione utilizzando strumenti più potenti integrati con Excel. Il metodo migliore per te dipende da dove è archiviato il file Excel e dal tuo livello di familiarità con diversi strumenti.
Di seguito sono riportate le due soluzioni più comuni ed efficaci.
Metodo 1: Power Automate (Consigliato per utenti Microsoft 365)
Questo è il modo moderno, robusto e senza codice per creare questa automazione, soprattutto se il file è archiviato in OneDrive o SharePoint. Il flusso viene eseguito automaticamente nel cloud, anche quando il file Excel è chiuso.
- Crea un “flusso cloud pianificato” in Power Automate (ad esempio, per eseguirlo ogni ora).
- Il flusso legge il tuo file Excel e ottiene il valore dalla cella dell’inventario.
- Un passaggio “Condizione” verifica se il valore è -10 (o inferiore).
- Se la condizione è vera, il flusso utilizza l’azione “Invia un’email (V2)” per inviare una notifica dal tuo account Outlook. Puoi personalizzare facilmente il corpo dell’email per includere il livello di stock, ad esempio: “Lo stock attuale è [valore dalla cella Excel]”.
Riferimento: Usare i flussi con Excel
Metodo 2: Macro VBA (Metodo tradizionale per Excel Desktop)
Questa soluzione funziona direttamente all’interno del file Excel ma richiede che il file sia aperto per attivare l’invio dell’email. Utilizza un piccolo pezzo di codice (macro).
- Premi Alt + F11 per aprire l’Editor VBA in Excel.
- Nel Project Explorer a sinistra, trova il tuo foglio di lavoro (es. Sheet1) e fai doppio clic su di esso.
- Incolla il seguente codice nella finestra bianca che appare.
- Modifica il codice in base alle tue esigenze (vedi i commenti nel codice).
Nota: i commenti in italiano presenti nel codice servono solo come guida e devono essere rimossi quando incolli il codice nell’editor VBA.
Codice VBA:
Private Sub Worksheet_Change(ByVal Target As Range)
' Questo codice viene eseguito automaticamente ogni volta che una cella in questo foglio viene modificata.
' --- CONFIGURA LE VARIABILI QUI SOTTO ---
Const STOCK_CELL As String = "A1" ' La cella che contiene il valore dello stock (es. "A1").
Const TRIGGER_VALUE As Long = -10 ' Il valore che attiva l'email.
Const RECIPIENT_EMAIL As String = "[email protected]" ' L'indirizzo email del destinatario.
' ----------------------------------------
' Verifica se la cella modificata è quella monitorata.
If Target.Address = Me.Range(STOCK_CELL).Address Then
' Verifica se il valore è uguale o inferiore al valore di soglia.
If Target.Value <= TRIGGER_VALUE Then
' Chiama la subroutine per inviare l'email.
SendStockAlertEmail Target.Value, RECIPIENT_EMAIL
End If
End If
End Sub
Private Sub SendStockAlertEmail(ByVal stockLevel As Long, ByVal recipientAddress As String)
Dim OutlookApp As Object
Dim OutlookMail As Object
' Crea un'istanza dell'applicazione Outlook.
On Error Resume Next
Set OutlookApp = GetObject(, "Outlook.Application")
If OutlookApp Is Nothing Then Set OutlookApp = CreateObject("Outlook.Application")
On Error GoTo 0
If Not OutlookApp Is Nothing Then
' Crea un nuovo elemento email.
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = recipientAddress
.Subject = "Urgente: Avviso scorte basse"
.Body = "Ciao," & vbCrLf & vbCrLf & _
"Questo è un avviso automatico. Le scorte hanno raggiunto un livello critico." & vbCrLf & vbCrLf & _
"Lo stock attuale è: " & stockLevel & vbCrLf & vbCrLf & _
"Si prega di intervenire." & vbCrLf & vbCrLf & _
"Grazie."
.Display ' Per test, usa .Display. Per invio automatico, usa .Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Else
MsgBox "Microsoft Outlook non è in esecuzione o non può essere avviato.", vbExclamation
End If
End Sub
Riferimento: Automating Outlook from a Visual Basic Application
Spero che queste informazioni ti siano utili. Se hai altre domande o hai bisogno di assistenza per la configurazione, non esitare a contattarmi. Sarò felice di aiutarti!
Se la risposta è utile, clicca su "Accetta risposta" e votala. Se hai altre domande su questa risposta, clicca su "Commenta".
Nota: segui i passaggi nella nostra documentazione per abilitare le notifiche e-mail se desideri ricevere la notifica e-mail relativa a questa discussione.