By kylejohnson95757@gmail.com el viernes 01 de marzo de 2019
Publicado en Excel
Respuestas 0
Likes 0
Vistas 3.2K
Votos 0
Hola,
Soy nuevo en VBA. Escribí un código para enviar un correo electrónico si hay un cambio de valor de celda en la columna F, y el código funciona muy bien. Pero quiero asegurarme de que el libro de trabajo se guarde antes de enviar el correo electrónico. El cuerpo del texto del correo electrónico debe incluir el valor de la celda de referencia, que es el valor de la columna A de la fila de valor modificado. No use msg, no funcionará con el libro de trabajo. El libro de trabajo tiene un formulario y cargará el valor de entrada en las celdas designadas. El código funciona bien con el formulario. Pero si alguien ingresa a la hoja y actualiza manualmente el valor, el correo electrónico se enviará a los usuarios, lo que no quiero hasta que se guarde el archivo. ¡Por favor ayuda! Gracias por adelantado.

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
Dim s1, s2, s3, s4, s5, s6 como rango
Establecer s1 = Rango ("F1310: F1334")
Establecer s2 = Rango ("F1426: F1450")
Establecer s3 = Rango ("F1339: F1363")
Establecer s4 = Rango ("F1455: F1479")
Establecer s5 = Rango ("F1368: F1392")
Establecer s6 = Rango ("F1397: F1421")
On Error Resume Next
Si Target.Cells.Count > 1, entonces salga de Sub
'busca el valor cambiado en la columna F
Si Intersect(Target, Union(s1, s2, s3, s4, s5, s6)) no es nada, entonces salga de Sub
If IsNumeric(Target.Value) y Target.Value <> "" Entonces
Dim xOutApp como objeto
Dim xOutMail como objeto
Dim xMailBody como cadena
Dim xMailText como cadena
Establecer xOutApp = CreateObject("Outlook.Aplicación")
Establecer xOutMail = xOutApp.CreateItem(0)
'valor de índice de la columna A de la fila ese valor cambió a incluido en el cuerpo del correo
xMailText = Destino.Desplazamiento(, -5).Valor
xMailBody = "Hola" & vbNewLine & vbNewLine & _
"Factura recibida por" & xMailText & vbNewLine & vbNewLine & _
"Gracias" & vbNuevaLínea & vbNuevaLínea & _
"Sr. J"
On Error Resume Next
Con xOutMail
.Para = "prueba@gmail.com"
.CC = ""
.BCC = ""
.Subject = "Factura recibida"
.Cuerpo = xCuerpo de correo
.Enviar
End With
En caso de error, vaya a 0
Establecer xOutMail = Nada
Establecer xOutApp = Nada
Si terminar
End Sub
Ver publicación completa