Mail por medio de macros

Hola:
Espero me puedas ayudar, he puesto varias preguntas pero nadie me contesta, mi problema son los siguientes, quiero que al abrir algún archivo de excel no me pida confirmar si el libro contiene macros, que se habiliten automáticamente, y otra es necesito enviar i-mails con documentos de office y al recibir estas personas quiero que me envíen confirmaciones pero, les envío que me envíen confirmación a través de outlook express pero muchas veces no lo hacen, entonces quiero introducir un xcodigo en un documento office para que al abrir el archivo me envíen su confirmación.lo he intentado con el siuguiente código solo que aun no encuentro como me ponerle el cuerpo del mensaje y ponerle la dirección de correo por si no me tiene agregado a sus contacto.
Código
sub auto_open()
ActiveWorkbook.SendMail recipients:="victor hugo",subject:"confirmacion"
end sub
En recipients aparece el nombre del contacto pero si no lo tienes agregado quisiera que aparececiera el correo por decir [email protected], y ademas el cuerpo de mensaje no tendría yo quiero que diga "te confirmo que recibí correctamente tu correo y archivos adjuntos" y el nombre de quien lo envío o su dirección, te agradecería mucho tu ayuda y atención a este mensaje.
mi correo es [email protected]
Nuevamente gracias

1 Respuesta

Respuesta
1
Víctor Hugo!
Estaba leyendo, casualmente, el mail que enviaste a mi cuenta preo no entendía cómo me había llegado... no parece un mail común.
De todos modos, respecto a la habilitar siempre las macros sin preguntar, tengo que decirte que eso está vedado a nosotros, pobres mortales. Y es correcto que así sea. Recuerda que la posibilidad de anular la ejecución de macros existe para que programas con macrovirus accedan a tu PC sin que siquiera te enteres. Si fuese posible esto sería lo primero que incluirían en el código maligno para evitarlo.
(Seguramente, debe haber métodos extra Excel que lo hagan)
Sin embargo, puedes compensar esa limitación con un diseño inteligente de tu archivo:
Agrega una hoja ("NOTA", por ejemplo) a modo de caratula que indique que para acceder a las hojas de ese archivo es necesario habilitar macros al inicio. Luego oculta el resto de las hojas y protege el libro con una clave compleja.
Así, en caso de que no habilite macros, se encontrará con una sólo hoja disponible, avisándole que, para que funcione debe habilitar macros. Como el libro cuenta con una protección, no le será posible ver el resto de las hojas ocultas, a menos que conozca la clave de libro.
Si, en cambio, las macros están habilitadas, una asociada al evento de apertura, mostrará el resto de las hojas, ocultará la caratula y también se encargaría de enviar el aviso a tu cuenta de mail.
En el panel de macros de ThisWorkbook pega esto:
Private Sub Workbook_Open()
Application.displayalerst = False
MuestraTo
Send_Msg
Application.displayalerst = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'salida
Call Salida
ActiveWorkbook.Saved = True
Cancel = True
End Sub
Y en un módulo pega estas macros:
Private Sub OcultaTo()
ActiveWorkbook.Unprotect "PIRULO"
For Each SHT In Sheets
If SHT.Name <> "NOTA" And SHT.Visible Then SHT.Visible = xlVeryHidden
Next SHT
ActiveWorkbook.Protect "PIRULO"
End Sub
Private Sub MuestraTo()
ActiveWorkbook.Unprotect "PIRULO"
For Each SHT In Sheets
If SHT.Name <> "NOTA" Then SHT.Visible = True
Next SHT
Sheets("NOTA").Visible = False
End Sub
Private Sub Salida()
Application.ScreenUpdating = False
Sheets("NOTA").Visible = True
Sheets("NOTA").Select
OcultaTo
Application.DisplayAlerts = True
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
MuestraTo
End Sub
Private Sub Send_Msg()
On Error GoTo 88
Dim objOL As New Outlook.Application
Dim objMail As MailItem
Set objOL = New Outlook.Application
Set objMail = objOL.CreateItem(olMailItem)
With objMail
.To = "[email protected]"
.Subject = "Confirmación"
.Body = "te confirmo que recibi correctamente tu correo y archivos adjuntos"
.Send
End With
Set objMail = Nothing
Set objOL = Nothing
88:
End Sub
Aquí incorporaste lo siguiente:
- Una macro encargada del envío de la confirmación de apertura a tu cuenta de e-mail.
- Dos macros auxiliares para ocultar y mostrar todas las hojas (excepto NOTA)
- Una macro auxiliar que se activa con el evento Before_Save, es decir antes de grabar.
Esta macro toma el control del proceso de grabación. Si la clave hubiese sido la que definiste en "Lector" no grabará el archivo, notificándolo de esto.
En los otros casos, ocultará todas las hojas menos la primera, protegerá el libro y lo grabará. Luego muestra todas las hojas nuevamente para poder seguir trabajando. De esta manera, nos aseguramos que la versión guardada siempre tenga todas las hojas ocultas.
Notarás que utilizo una contraseña en este libro: la de Libro que está incluida en el mismo código de la macro.
Por tal razón, es conveniente que todo el proyecto de VBA estuviese también protegido para que el usuario no pueda leer el código y, eventualmente, descubrir cual es la contraseña.
Bueno, Víctor, Tal vez ahora entiendas por qué no recibías respuesta a tu consulta...
aclarando qué entendí mal o qué faltó.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas