Añadir mas de un archivo adjunto mediante macro.
Buenas noches expertos.
Tengo casi terminada una macro que me envía una hoja de un libro por correo mediante groupwise (Gestor de correo)
Option Explicit Private ogwApp As GroupwareTypeLibrary.Application Private ogwRootAcct As GroupwareTypeLibrary.account Sub Email_Multiple_Users_Via_Groupwise() 'Macro purpose: To stand as a self contained procedure for creating and 'sending an email to multiple users (if required) 'This code requires: ' -A reference to the Groupware Type Library ' -The following 2 lines declared at the beginning of the MODULE: ' Private ogwApp As GroupwareTypeLibrary.Application ' Private ogwRootAcct As GroupwareTypeLibrary.account ' -The following named ranges on the spreadsheet ' Email_To ' Email_CC ' Email_BC 'SECTION 1 'Declare all required variables Const NGW$ = "NGW" Dim lRpta Dim ogwNewMessage As GroupwareTypeLibrary.Mail StrLoginName As String, _ StrMailPassword As String, _ StrSubject As String, _ StrBody As String, _ strAttachFullPathName As String, _ sCommandOptions As String, _ cl As Range 'SECTION 2 'Set all required variables StrLoginName = "mi email" 'Enter your mailbox ID here StrMailPassword = "" 'A true password is not required If Sheets("Hoja1").Range("S1") = "" Then StrSubject = Sheets("Hoja1").Range("A1") Else StrSubject = Sheets("Hoja1").Range("T1") End If StrBody = "Buenos Días" & vbCrLf & _ "VIctor" strAttachFullPathName = "F:/" & Sheets("Hoja1").Range("A1") & ".xlsm" 'Put full path of workbook to be attached between quotes. 'SECTION 3 'Create the Groupwise object and login in to Groupwise 'Set application object reference if needed If ogwApp Is Nothing Then 'Need to set object reference DoEvents Set ogwApp = CreateObject("NovellGroupWareSession") DoEvents End If If ogwRootAcct Is Nothing Then 'Need to log in 'Login to root account If Len(StrMailPassword) Then 'Password was passed, so use it sCommandOptions = "/pwd=" & StrMailPassword Else 'Password was not passed sCommandOptions = vbNullString End If Set ogwRootAcct = ogwApp.Login(StrLoginName, sCommandOptions, _ , egwPromptIfNeeded) DoEvents End If 'SECTION 4 'Create and Send the Message 'Create new message Set ogwNewMessage = ogwRootAcct.WorkFolder.Messages.Add _ ("GW.MESSAGE.MAIL", egwDraft) DoEvents 'Assign "To" recipients For Each cl In Sheets("Hoja1").Range("P1") If Not cl.Value = "" Then ogwNewMessage.Recipients.Add cl.Value, NGW, egwTo Next cl With ogwNewMessage 'Asign the SUBJECT text If Not StrSubject = "" Then .Subject = Sheets("Hoja1").Range("A1") 'Assign the BODY text If Not StrBody = "" Then .BodyText = StrBody 'Assign Attachment(s) If Not strAttachFullPathName = "" Then .Attachments.Add strAttachFullPathName 'Send the message On Error Resume Next 'Send method may fail if recipients don't resolve .Send DoEvents On Error GoTo 0 End With 'SECTION 5 'Release all variables Set ogwNewMessage = Nothing Set ogwRootAcct = Nothing Set ogwApp = Nothing DoEvents 'Sheets("Hoja1").Select 'Sheets("Hoja1").Unprotect Password:="password" ' Borramos area de impresion anterior: 'ActiveSheet.PageSetup.PrintArea = "" 'Definimos nueva area de impresion seleccionando el contenido 'Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 'ActiveSheet.PageSetup.PrintArea = "$A$1:$M$152" 'Sheets("Hoja1").PrintOut 'Sheets("Hoja1").Protect Password:="password" ' MsgBox "COPIA CREADA, CORREO ENVIADO E IMPRIMIDO EN PAPEL" End Sub
Con otra macro, cada vez que se ejecuta, guarda la hoja a enviar en una ruta fija, F:\
Queda constancia del nombre del archivo generado a partir del rango R2 (para posterior localizacion, ya tenemos ruta y nombre). (Gracias a Elsa)
Dependiendo de los rangos R2:R7 son los archivo guardados y son los que quiero agregar al mensaje.
Si hay un solo archivo, funciona todo correcto.
Cuando hay varios archivos solo adjunta el primero creado.
Otra cosa es que dependiendo si hay uno o mas archivos, el asunto del mensaje varia:
he probado con esta parte de codigo:
If Sheets("Hoja1").Range("S1") = "" Then StrSubject = Sheets("Hoja1").Range("A1") Else StrSubject = Sheets("Hoja1").Range("T1") End If
Pero siempre me coje la celda A1. Decir que S1 lleva la funcion:
=CONTARA(R2:R8)
para saber cuantos archivos hay generados
He probado con attachments.add pero nada.
Y aqui hay una cononsulta solucionada con el mismo tema de los adjuntos, pero no llego a entenderlo bien
http://vbcity.com/forums/t/116370.aspx
Los adjuntos que quiero enviar son libros de excel con extension xlsm.
Gracias como siempre por vuestro tiempo.