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.