Macro que envíe automáticamente pestaña activa de un libro

Amigo necesito su ayuda, necesito realizar una macro que se envíe automáticamente solo la pestaña que este activa del libro por correo outlook.

1 respuesta

Respuesta
1

Ok, te preparo una solución y te la mando.

Te paso mi solución con estas instrucciones:

1- Crea una carpeta llamada TEMPORAL que cuelgue directamente de C:

2- Después solo queda que pongas esta macro en tu archivo y cuando estés situado en la pestaña elegida la ejecutas.

Sub proceso()
'por luismondelo
pase = MsgBox("Desea enviar la hoja actual por mail???", vbYesNo, "¡¡ATENCION!!")
If pase = vbNo Then Exit Sub
para = InputBox("introduzca la dirección de correo del destinatario")
asunto = InputBox("introduzca el asunto")
cuerpo = inpubox("introduzca un mensaje para el cuerpo del mail")
Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio).Activate
ActiveSheet.Copy after:=Workbooks(otro).Sheets(Workbooks(otro).Sheets.Count)
For x = 1 To 3
Sheets(1).Delete
Next
ActiveWorkbook.SaveAs "c:\temporal\info"
ActiveWorkbook.Close False
Set lmd1 = CreateObject("outlook.application")
Set lmd2 = lmd1.createitem(olmailitem)
lmd2.to = para
lmd2.Subject = asunto
lmd2.body = cuerpo
lmd2.attachments.Add "c:\temporal\info.xlsx"
lmd2.display
Kill "c:\temporal\info.xlsx"
End Sub

recuerda finalizar la consulta

Buenos dias Amigo, perfecta tu solucion eso exactamente es lo que queria... tengo otra pequeña inquietud si no es mucha molestia, ademas necesito que al enviar se autoguarde y se cierre el libro activo...

Entonces la macro quedaría asi:

Sub proceso()
'por luismondelo
pase = MsgBox("Desea enviar la hoja actual por mail???", vbYesNo, "¡¡ATENCION!!")
If pase = vbNo Then Exit Sub
para = InputBox("introduzca la dirección de correo del destinatario")
asunto = InputBox("introduzca el asunto")
cuerpo = inpubox("introduzca un mensaje para el cuerpo del mail")
Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
Workbooks.Add
otro = ActiveWorkbook.Name
Workbooks(mio).Activate
ActiveSheet.Copy after:=Workbooks(otro).Sheets(Workbooks(otro).Sheets.Count)
For x = 1 To 3
Sheets(1).Delete
Next
ActiveWorkbook.SaveAs "c:\temporal\info"
ActiveWorkbook.Close False
Set lmd1 = CreateObject("outlook.application")
Set lmd2 = lmd1.createitem(olmailitem)
lmd2.to = para
lmd2.Subject = asunto
lmd2.body = cuerpo
lmd2.attachments.Add "c:\temporal\info.xlsx"
lmd2.display
Kill "c:\temporal\info.xlsx"
activeworkbook.save
activeworkbook.close false
End Sub

NOTA: Si quieres que se envíe el correo sin necesidad de verlo antes, sustituye la palabra DISPLAY por SEND

Recuerda finalizar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas