By Jake giovedì 17 febbraio 2022
pubblicato in Excel
Risposte 1
Mi piace 0
Visualizzazioni 5.7K
voti 0
Quindi ho usato questo eccellente articolo Come inviare automaticamente e-mail in base al valore della cella in Excel? (extendoffice. Com) e ho raccolto le risposte dalle risposte per farlo funzionare come mi serve, ma l'ultimo pezzo che non riesco a capire è come duplicare ciò che ho fatto per eseguire più celle. Ho provato a copiare/incollare e riorganizzare il codice con valori diversi come C4, C5, ecc. ma ottengo sempre errori. Ho funzionato benissimo dove se il valore in C3 è < 5 invierà un'e-mail quando la cartella di lavoro viene salvata. Quello di cui ho bisogno ora, poiché questo è per un foglio di inventario, è avere più valori di cella controllati con valori diversi . Ad esempio, se solo C3 < 5 invia un'e-mail. Se solo C4 è < 6 invia un'e-mail. Se C3 < 5, C4 è < 6 e C5 < 3 invia un'e-mail. Sarebbe bello se venisse generata una sola e-mail al salvataggio con tutti i valori che soddisfano i criteri <. In termini reali (non termini di codifica), il foglio di calcolo è un luogo in cui i tecnici possono effettuare il check-in e il ritiro degli articoli dall'archivio. Quello che sto cercando di fare è avere un'e-mail inviata automaticamente quando qualcuno salva la cartella di lavoro e il livello di inventario di un articolo è sceso al di sotto di un valore specifico, quindi so che un ordine deve essere effettuato presto. Finora questo è il mio codice:

Questa cartella di lavoro
Cartella di lavoro secondaria privata_AfterSave(ByVal Success As Boolean)
On Error Resume Next
Dim xI come intero
Dim xRg come intervallo
Imposta xRg = Intervallo ("Informazioni! C3")
xI = Int(xRg.Valore)
Se xI < 5 Allora
Chiama Mail_small_Text_Outlook
End If
End Sub

Modulo 1
Posta secondaria_small_Text_Outlook()
Dim xOutApp come oggetto
Dim xOutMail come oggetto
Dim xMailBody come stringa
Imposta xOutApp = CreateObject ("Outlook.Application")
Imposta xOutMail = xOutApp.CreateItem(0)
xMailBody = "Ciao" & vbNewLine & vbNewLine & _
"Questa è la riga 1" & vbNewLine & _
Intervallo ("Informazioni! C3") & vbNewLine & _
"Questa è la linea 2"
On Error Resume Next
Con xOutMail
.To = "Indirizzo e-mail"
.CC = ""
.BCC = ""
.Subject = "invia tramite test valore cella"
.Corpo = xMailBody
.Visualizza 'o usa .Invia
Fine Con
On Error GoTo 0
Imposta xOutMail = Niente
Imposta xOutApp = Niente
End Sub
Ciao Jake,

Secondo le vostre esigenze, si prega di trovare Questa cartella di lavoro nel Applicazioni Microsoft Visual Basic finestra.
  567959C0-D2E1-4819-85E7-FA20A3D06BE9.png


Fare doppio clic su Questa cartella di lavoro e copia il codice qui sotto:

'Update by Extendoffice 2022/2/17
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

On Error Resume Next

Dim RgC3 As Range
Dim RgC4 As Range
Dim RgC5 As Range

Set RgC3 = Range("Information!C3")
Set RgC4 = Range("Information!C4")
Set RgC5 = Range("Information!C5")


If (IsNumeric(RgC3) And RgC3.Value < 5) And (IsNumeric(RgC4) And RgC4.Value < 6) And (IsNumeric(RgC5) And RgC5.Value < 3) Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC3) And RgC3.Value < 5 Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC4) And RgC4.Value < 6 Then
Call Mail_small_Text_Outlook

End If

End Sub


Sub Mail_small_Text_Outlook()


Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
Range("Information!C3") & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "Email Address"
.CC = ""
.BCC = ""
.Subject = "send by cell value test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing

End Sub


Si prega di modificare la parte xMailBody di cui hai bisogno.

Amanda
·
anni fa, 2
·
0 Piace
·
0 Voti
·
Commenti
·
Visualizza il post completo