By Jake na quinta-feira, 17 de fevereiro de 2022
Postado em Excel
Respostas 1
Gostos 0
Visualizações 5.8K
Votos 0
Então eu usei este excelente artigo Como enviar e-mail automaticamente com base no valor da célula no Excel? (extendoffice. Com) e juntei as respostas das respostas para fazer isso funcionar como eu preciso, mas a última parte que não consigo descobrir é como duplicar o que fiz para executar várias células. Eu tentei copiar/colar e reorganizar o código com valores diferentes como C4, C5, etc. mas sempre recebo erros. Eu tenho funcionado muito bem para onde, se o valor em C3 for < 5, ele enviará um e-mail quando a pasta de trabalho for salva. O que eu preciso agora, já que isso é para uma planilha de inventário, é ter vários outros valores de célula verificados em valores diferentes . Por exemplo, se apenas C3 < 5 envie um email. Se apenas C4 for < 6 envie um email. Se C3 < 5, C4 for < 6 e C5 < 3 envie um email. Seria bom se apenas um e-mail fosse gerado ao salvar com todos os valores que correspondessem aos critérios <. O que estou tentando fazer é enviar um e-mail automaticamente quando alguém salva a pasta de trabalho e o nível de estoque de um item caiu abaixo de um valor específico, então eu sei que um pedido precisa ser feito em breve. Até agora este é o meu código:

Esta pasta de trabalho
Private Sub Workbook_AfterSave (ByVal Success As Boolean)
On Error Resume Next
Dim xI como inteiro
Dim xRg como intervalo
Set xRg = Range("Informações!C3")
xI = Int(xRg.Valor)
Se xI < 5 Então
Ligue para Mail_small_Text_Outlook
Se acabar
End Sub

Módulo 1
Sub Mail_small_Text_Outlook()
Dim xOutApp como objeto
Dim xOutMail como objeto
Dim xMailBody como string
Set xOutApp = CreateObject("Outlook.Application")
Definir xOutMail = xOutApp.CreateItem(0)
xMailBody = "Olá" & vbNewLine & vbNewLine & _
"Esta é a linha 1" & vbNewLine & _
Range("Informações!C3") & vbNewLine & _
"Esta é a linha 2"
On Error Resume Next
Com xOutMail
.To = "Endereço de e-mail"
.CC = ""
.BCC = ""
.Subject = "enviar por teste de valor de célula"
.Body = xMailBody
.Exiba 'ou use .Enviar
Terminar com
Em erro GoTo 0
Definir xOutMail = Nada
Definir xOutApp = Nada
End Sub
Oi Jake,

De acordo com suas necessidades, encontre Esta pasta de trabalho no Aplicativos Microsoft Visual Basic janela.
  567959C0-D2E1-4819-85E7-FA20A3D06BE9.png


Dê um duplo clique Esta pasta de trabalho e copie o código abaixo:

'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


Por favor, altere a parte xMailBody conforme necessário.

Amanda
·
anos 2 atrás
·
0 Curtiu
·
0 Votos
·
0 Comentários
·
Ver postagem completa