Hola,
Necesito enviar un email (o sms) de forma automática cuando en un archivo de excel se cumpla una condición.
Tengo una hoja de excel conectada a una web y por eso están continuamente modificandose los valores. Lo que quiero es, p.ej. que cuando la celda A1 de la Hoja1 tenga valor 1 automaticamente me envie un email diciendome la celda A1 ha alcanzado el valor 1"
Espero que pueda hacerse. Muchas gracias por anticipado.
Hola:
En primer lugar Excel se calcula sólo si el libro está abierto, así que para que compruebe esta condición deberías mantener el archivo abierto. (esto parece una tontería, pero hay que decirlo, como en las instrucciones de los electrodomésticos que pone "compruebe que el aparato está conectado a la red eléctrica y que haya corriente")
Cuando hablas de que la hoja está conectada a una web, entiendo que es mediante una consulta de datos externos y que la tienes configurada para que se actualice cada x minutos.
El problema es que no hay un evento que incorpore Excel que se produzca tras la actualización, en el que realizar esa comprobación que quieres hacer para ver si cierta celda sobrepasa el umbral.
-Alternativa 1: si hay algo que se calcula en la hoja a partir de los datos de la consulta (supongo que tendrás una celda que comprueba cosas y devuelve ese 1) puedes utilizar el evento Calcular de la hoja para que se ejecuta cada vez que la hoja se calcula
Worksheet_Calculate
este evento está en el código de la hoja
-Alternativa 2: crear una clase nueva para la consulta con el evento afterupdate. Aquí explican cómo http://support.microsoft.com/kb/213187/en-us
Una vez que se cumpla la condición, para el envío de mensajes, se puede hacer de varias maneras, depende del gestor de correo que tengas instalado o de si lo quieres hacer utilizando un correo web (como en este caso http://www.necesitomas.com/automatizar-pedido-outlook-web-access-owa)
Por cierto, pon un indicador en algún sitio diciendo que has enviado el mensaje, para que sólo envíe el mensaje la primera vez que se cumpla la condición y no empiece a enviar el mismo mensaje cada minuto.
------
Ya sé Excel, pero necesito más.
Se que es un hilo muy antiguo, pero no encuentro por ningún foro la solución a poner una marca que indique que se ha mandado ya un email, para evitar enviar de nuevo el correo.
Puedes utilizar simplemente una celda. Si hay cierto valor en esa celda (por ejemplo SI), es que ya se ha enviado el email.
Cuando se modifique cualquier otro lugar que haga que se deba volver a enviar el email, tendrías que tener un código que vuelva a poner en la celda que decía el valor que indique que no se ha enviado (por ejemplo NO)
Un saludo