InicioCiencia EducacionMacro de excel para enviar una hoja via outlook automáticam

Macro de excel para enviar una hoja via outlook automáticam

Ciencia Educacion•11/22/2012
hola amigos taringueros, hoy quiero compartir un código de visual basic excel que me ha servido mucho para trabajar mucho menos, la cuestion es que muchas veces deseamos enviar una hoja de un libro de excel. si tenemos outlook(en este ejemplo es obligatorio que tengamos configurado el correo en outlook) debemos buscar el archivo, si está abierto cerrarlo. adjuntarlo, en fin una lata.

si haces algún trabajo repetitivo, tienes un gráfico en una hoja, una planilla o algo que te pidan que debas enviar constantemente, aqui está parte de la solución aclaro de antemano que este código no es mio a continuación les dejo los créditos:
See this page about security warnings if you do that.
http://www.rondebruin.nl/mail/prevent.htm


como verán lo he utilizado para mis oscuros propósitos , en este caso necesitan tener el programa outlook instalado. por supuesto, si agregas por ejemplo un código de tiempo para que lo envie cada cierto fecha o periodo de tiempo te puede ayudar mas, por el momento aqui va el código: le puse algunos comentarios para tratar de explicar aunque el tipo lo hace de maravilla.


Sub Mail_ActiveSheet()
'Working in 2000-2010´
'definición de variables
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object

With Application
'importante para que no parpadee la pantalla y se agilice el procesamiento
.ScreenUpdating = False
.EnableEvents = False
End With

Set Sourcewb = ActiveWorkbook

'Copy the sheet to a new workbook (copia la hoja en libro nuevo)
ActiveSheet.Copy
Application.DisplayAlerts = False
Set Destwb = ActiveWorkbook

'Determine the Excel version and file extension/format (identifica la version de excel que tienes instalada)
With Destwb
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007-2010
'We exit the sub when your answer is NO in the security dialog that you only
'see when you copy a sheet from a xlsm file with macro's disabled.
If Sourcewb.Name = .Name Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "Your answer is NO in the security dialog"
Exit Sub
Else
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If .HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56: FileExtStr = ".xls": FileFormatNum = 56
Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
End If
End With

' 'Change all cells in the worksheet to values if you want
' With Destwb.Sheets(1).UsedRange
' .Cells.Copy
' .Cells.PasteSpecial xlPasteValues
' .Cells(1).Select
' End With
' Application.CutCopyMode = False

'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp" & ""
TempFileName = "aqui podes escribir el nombre del libro que tu quieras " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss"

Set OutApp = CreateObject("Outlook.Application"
Set OutMail = OutApp.CreateItem(0)

With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
'escribe la direccion del destinatario
.To = "[email protected]"
.CC = "[email protected]"
.BCC = ""
.Subject = "el asunto va aqui"
.Body = "escribe el cuerpo del mensaje"
.Attachments.Add Destwb.FullName
'You can add other files also like this
'.Attachments.Add ("C:test.txt"
'or use .Send
Rem EL AUTOR DICE QUE PUEDO USAR .DISPLAY PARA MOSTRAR. PERO USARE SEND PARA ENVIARLOS AUTOMÁTICAMENTE

.SEND
Rem USANDO .SEND. MANDA EL CORREO SIN NECESIDAD DE CLICKEAR ENVIAR
End With
On Error GoTo 0
.Close savechanges:=False
End With

'Delete the file you have send
Kill TempFilePath & TempFileName & FileExtStr

Set OutMail = Nothing
Set OutApp = Nothing

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


bueno, espero que también les sea de mucha utilidad, pueden crear un código para que por ejemplo cuando un porcentaje llegue al 100% lo envie, o coloquen un boton en excel. lo que prefieran. (es posible que taringa confunda el codigo con emoticones pero cuando lo pasen a excel quedará como nuevo)

Salud amigos.
Datos archivados del Taringa! original
15puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
crsuiza🇦🇷
Usuario
Puntos0
Posts1
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.