............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Ayuda con una Macro!!

Ver el tema anterior Ver el tema siguiente Ir abajo

Ayuda con una Macro!!

Mensaje por alejandrorestifo el Mar Nov 03, 2009 1:47 am

Buenas Foreros, estoy necesitando ayuda para resolver un problema.
Necesitaria que en una planilla de Excel segun el resultado de una fila en particular "A" cuando el resultado sea 0 automaticamente envie un mail con esa fila en particular. O sea en la columna A hay datos que con el correr de los dias van disminuyendo hasta llegar a 0, y lo que necesitaria es que al llegar a 0 automaticamente genere un mail con la informacion de la fila del mismo. Este puede ser 1 fila o varios a la vez, esto correria a diario.
La parte del envio de mail algo hice el tema es que no se como hacer lo otro que les pregunte.

Sub CDO_Mail_Small_Text_2()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxxx@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*******"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"

With iMsg
Set .Configuration = iConf
.To = "xxx@hotmail.com"
.CC = ""
.BCC = ""
' Note: The reply address is not working if you use this Gmail example
' It will use your Gmail address automatic. But you can add this line
' to change the reply address .ReplyTo = "xxx@hotmail.com"
.From = """Alejandro Restifo"" "
.Subject = "Important message"
.TextBody = strbody
.Send

End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

End Sub

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por GalileoGali el Miér Nov 04, 2009 6:49 pm

1) tu macro, se parece mucho a una macro famosa que se consigue en sitios dedicados a Excel, salvo los datos personales: direcciones de maily Nombre de Remitente.
2)Texbody se carga con strBody, de donde deberia cargarse strBody?
3) Como se producen los cambios en la columna A, son formulas o datos que se ingresan manualmente?

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Miér Nov 04, 2009 9:01 pm

Aca tejo una imagen de la planilla porque no se como subirla.
[Tienes que estar registrado y conectado para ver este vínculo]
Lo que necesito es que cuando A sea 0 copie la fila en el strbody
Los datos de la columna A cambian segun la diferencia de la comuna I y H que son fechas, es simplemente una diferencia de fechas. O sea el dia que no hay diferencia necesitaria que envie el mail para ver que accion tomar.

Saludos y muchas gracias.

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por P@li el Miér Nov 04, 2009 9:42 pm

Código:

dim tabla as range
dim fila as range
dim celda as range

set tabla=sheets("nombre hoja").range("A4").currentrange

for each fila in tabla.rows

if fila.cells(1,1)=0 then

'acá iría tu procedimiento
'y en alguna parte del mismo, podría ir algo parecido a esto:

strbody=""
for each celda in fila.cells
strbody = strbody & "<br/>" & celda.text
next

end if

next

set tabla=nothing

Saludos,
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Miér Nov 04, 2009 10:40 pm

Pablo verifique y me da errores, te muestro como lo arme a ver que te parece.
Gente desde ya muchas gracias a todos por la mano que dan!!!

[code]
Sub Envio de Mail()
Dim tabla As Range
Dim fila As Range
Dim celda As Range

Set tabla = Sheets("Administraciones Cedidas").Range("A4").currentrange
For Each fila In tabla.Rows

If fila.Cells(1, 1) = 0 Then

Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxxx@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*******"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"


strbody = ""
For Each celda In fila.Cells
strbody = strbody & "
" & celda.Text
Next

End If

Next

Set tabla = Nothing

With iMsg
Set .Configuration = iConf
.To = "xxxxxx@hotmail.com"
.CC = ""
.BCC = ""
' Note: The reply address is not working if you use this Gmail example
' It will use your Gmail address automatic. But you can add this line
' to change the reply address .ReplyTo = "xxxxx@gmail.com"
.From = """Alejandro Restifo"" "
.Subject = "Important message"
.TextBody = strbody
.Send

End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

End Sub

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por P@li el Miér Nov 04, 2009 11:00 pm

tenés razón me equivoque en esta línea:
Set tabla = Sheets("Administraciones Cedidas").Range("A4").currentrange

cambiala por esta:
Set tabla = Sheets("Administraciones Cedidas").Range("A4").currentregion

y la parte de tu codigo:
With iMsg
Set .Configuration = iConf
.To = "xxx@hotmail.com"
.CC = ""
.BCC = ""
' Note: The reply address is not working if you use this Gmail example
' It will use your Gmail address automatic. But you can add this line
' to change the reply address .ReplyTo = "xxx@hotmail.com"
.From = """Alejandro Restifo"" "
.Subject = "Important message"
.TextBody = strbody
.Send

End With

tiene que estar abajo de:
strbody = ""
For Each celda In fila.Cells
strbody = strbody & "
" & celda.Text
Next


Saludos

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Jue Nov 05, 2009 7:08 pm

Quedo asi pero no funciona, da un error de sintaxis en " & celda.Text, la estructura general esta bien ahora??

Sub Mail()
Dim tabla As Range
Dim fila As Range
Dim celda As Range

Set tabla = Sheets("Administraciones Cedidas").Range("A4").CurrentRegion
For Each fila In tabla.Rows

If fila.Cells(1, 1) = 0 Then

Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxxx@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*******"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2" & vbNewLine & _
"This is line 3" & vbNewLine & _
"This is line 4"


strbody = ""
For Each celda In fila.Cells
strbody = strbody & ""
" & celda.Text
Next

With iMsg
Set .Configuration = iConf
.To = "xxxxxx@hotmail.com"
.CC = ""
.BCC = ""
' Note: The reply address is not working if you use this Gmail example
' It will use your Gmail address automatic. But you can add this line
' to change the reply address .ReplyTo = "xxxxx@gmail.com"
.From = """Alejandro Restifo"" "
.Subject = "Important message"
.TextBody = strbody
.Send

End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

End If

Next

Set tabla = Nothing

End Sub
[code]

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por federico ramirez marron el Jue Nov 05, 2009 7:39 pm

creo que deberias poner esto
strbody = strbody & """ & celda.Text"
avatar
federico ramirez marron

Masculino Cantidad de envíos : 95
Edad : 44
Ciudad - Pais : acapulco, gro mexico
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Jue Nov 05, 2009 7:46 pm

Parece que si ahora, ahora al correrlo me da un error de tiempo de ejecucion: el objeto no admite esta propiedad o metodo.

For Each celda In fila.Cell

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por GalileoGali el Jue Nov 05, 2009 8:19 pm

no te estara faltando la"s" en CellS?????

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Jue Nov 05, 2009 8:31 pm

Si que dolobu, ahora corre completo, solo que me llegan 3 mail con esto:
" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text" & celda.Text
o sea me envia un mail cada vez que encuentra un 0 en la fila A de la tabla.
Si hay forma guardando un txt con las filas para mi seria lo mismo.
Saludos y gracias a todos

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por federico ramirez marron el Jue Nov 05, 2009 8:44 pm

a mi me funciona asi

Sub Mail()
Dim tabla As Range
Dim fila As Range
Dim celda As Range

Set tabla = Sheets("Administraciones Cedidas").Range("A4").CurrentRegion
For Each fila In tabla.Rows

If fila.Cells(1, 1) = 0 Then

Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "ramf28@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "tucontraseña"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Update
End With

'strbody = "Hi there" & vbNewLine & vbNewLine & _
'"This is line 1" & vbNewLine & _
'"This is line 2" & vbNewLine & _
'"This is line 3" & vbNewLine & _
'"This is line 4"


strbody = ""
For Each celda In fila.Cells
strbody = strbody & "" _
& celda.Text
Next

With iMsg
Set .Configuration = iConf
.To = "ramf28@hotmail.com"
.CC = ""
.BCC = ""
' Note: The reply address is not working if you use this Gmail example
' It will use your Gmail address automatic. But you can add this line
' to change the reply address .ReplyTo = "xxxxx@gmail.com"
.From = """fede"""
.Subject = "Important message"
.TextBody = strbody
.Send
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With

End If

Next

Set tabla = Nothing

End Sub
avatar
federico ramirez marron

Masculino Cantidad de envíos : 95
Edad : 44
Ciudad - Pais : acapulco, gro mexico
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por GalileoGali el Jue Nov 05, 2009 9:18 pm

Alejandrorestifo: P@li actuo hasta donde su buena voluntad lo alento, pero NO es costumbre de este foro hacer macros a medida, solo colaboramos con quien sabiendo algo de VBA, tiene alguna que otra dificultad. Desde ya que preguntando por aqui y otro poco acullá se llega a Roma....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por alejandrorestifo el Jue Nov 05, 2009 9:33 pm

Sin mas que decir que muchisimas gracias federico ramirez marron y p@li.
La verdad que no crei que esto funcionaria, unos master ambos.
GalileoGali no comparto pero resperto tu opinion. Estos foros se mantienen por la buena voluntad de la gente que lo integran, nadie esta obligado a nada.
Desde ahora colaborare en todos los temas que pueda.

Muchas gracias a todos

alejandrorestifo

Masculino Cantidad de envíos : 7
Edad : 40
Ciudad - Pais : Buenos Aires - Argentina
Version de Excel : 2003-2007
Fecha de inscripción : 03/11/2009

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por P@li el Vie Nov 06, 2009 12:04 am

Solamente tendrías que dejar dentro de:
For Each fila In tabla.Rows

Lo siguiente:
If fila.Cells(1, 1) = 0 Then
'strbody = "Hi there" & vbNewLine & vbNewLine & _
'"This is line 1" & vbNewLine & _
'"This is line 2" & vbNewLine & _
'"This is line 3" & vbNewLine & _
'"This is line 4"

strbody = ""
For Each celda In fila.Cells
strbody = strbody & "" _
& celda.Text
Next
End If

Todo lo demás, ponelo después del for each que te dije antes.
Podrías comprobar que la cadena strbody no esté vacía antes de enviar.

Yo comparto la opinión de Gali, yo no te hice ninguna macro a medida, solamente te ayudé con una porción de código, que después fuiste adaptando, pero este código no está ni probado ni depurado, esa va a ser tu tarea de programador, y tu propio proceso de aprendizaje.


Desde ya que esperamos con entusiasmo ver tus aportes.

Saludos.
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: Ayuda con una Macro!!

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.