Guardar hoja con un folio, enviar por outlook

Hola amigo buenas tardes,
Me encuentro en un dilema laboral y necesito ayuda experta, pido tu ayuda para una rutina que a groso modo hace lo siguiente:


En el Libro1 tengo 5 hojas
Que me copie solo los valores de la Hoja3 y lo guarde como un nuevo libro en la ruta Z:\ con el nombre: "Orden numero " + un numero consecutivo que aumente cada vez que se corra la rutina.
Una vez que se guardo, automáticamente se envíe por outlook al correo [email protected]
En el Libro1 Original no hace ninguna modificación.
Agradezco tu atención y quedo de ti esperando tu apoyo.
Gracias, excelente tarde.


Edgar Ureña

1

1 respuesta

Respuesta
1

Vamos por partes para ver si te puedo ayudar. Lo primero añade una "Hoja6" en tu libro donde situar los datos necesarios para hacer lo que necesitas. Lo hago por facilidad y porque comprendas lo que hay que hacer. Luego puedes hacer las modificaciones en tu código. El contenido de la hoja nueva "Hoja6" es el siguiente:

A1:  Z:\

A2: Orden número

A3: 1

A4: =A2& " " &A3 & ".xls"

A5: [email protected]

En la columna B, deberías escribir qué es cada cosa para evitar líos, pero para el programa no es necesario. En A3 se va incrementando el número con cada iteración del programa.

Ahora copia el código (Alt+F11, Insert, New Module) en un módulo nuevo.

Option Explicit
Sub GuardayEnvia()

Dim ruta As String

Dim nom As String

Dim dir As String

Dim otlApp As Outlook.Application

Dim otlNewMail As Outlook.MailItem
'Calcula los parámetros a partir de los datos en la Hoja6'Y la actualiza

With Worksheets("Hoja6")

ruta = .Range("A1").Value

nom = .Range("A4").Value 'nombre completo A2 + A3

.Range("A3").Value = .Range("A3").Value + 1

dir = .Range("A5").Value

End With
'Copia la hoja 3 en un libro nuevo

Worksheets("Hoja3").Copy

'Workbooks.Add no hace falta aparentemente

'ActiveSheet.Paste
'Guarda el libro

ActiveWorkbook.SaveAs (ruta & nom)
'Envío por correo.

Set otlApp = Outlook.Application

Set otlNewMail = otlApp.CreateItem(olMailItem)
With otlNewMail

.To = dir .CC = ""

.Subject = "Envío del fichero " & nom

.Body = "Enviando fichero." & Chr(13) & "Saludos"

.Attachments.Add ruta & nom

.Display

.SEND

End With

otlApp.Quit

Set otlNewMail = Nothing

Set otlApp = Nothing
End Sub

Antes de poder ejecutarlo tienes que indicar la referencia a Outlook. Esto se hace dentro del editor VBA en el menú Tools/References. BUscas una referencia que se llame "MIcrosoft Outook 12.0 Object Library" (el número puede variar) y la marcas.

Gracias por tu ayuda, es excelente. Únicamente hay un detalle, cuando se ejecuta la macro, justo cuando me va a guardar el nuevo libro me pregunta si quiero guardar las propiedades VBA y le tengo que dar "SI" por default, hay forma de hacer esto dentro de la misma instrucción?.

Un saludo y mil gracias!

Edgar Ureña

Hay una forma de hacerlo y es evitar los mensajes de la aplicación. Para ello cambia la línea donde se guarda por éstas.

'Guarda el libro

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs (ruta & nom)

Application.DisplayAlerts = True

Con ello no te saldrán mensajes mientras guarda el archivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas