Que macro puedo usar para seleccionar un destinatario y enviar mail.

Estoy en el proceso de un formulario para solicitar reportes de fallas. En mi archivo de Excel tengo el UF1 que registra los datos del solicitante para después dar clic en un botón que envía el correo. Lo que necesito es que en mi UF1 de captura haya dos botones de opción en donde el usuario pueda elegir a quien enviar el correo, no se si me explique y si esto sea posible. Les agradezco su apoyo

Ahorita yo estoy utilizando este codigo para enviar el mail pero solo me lo manda a mi.

Private Sub CommandButton4_Click()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim OA, OM As Object
Dim NA As Variant
Dim Path, TD, fn, mydoc As String
TD = Format(Date, "dd/mm/yyyy")
Path = ThisWorkbook.Path & "\"
fn = ActiveSheet.name
mydoc = Path & fn & ".xlsx"
mydoc1 = Path & fn & ".pdf"
Dest = Cells(3, "E")
Sheets(fn).Copy
ActiveWorkbook.SaveAs Filename:=mydoc, FileFormat:=xlOpenXMLWorkbook
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
mydoc1, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWorkbook.Close False

Set OA = CreateObject("Outlook.Application")
Set OM = OA.CreateItem(0)

With OM
.To = "[email protected]"
.CC = ""
.BCC = ""
.Subject = "Solicitud de Ticket"
.Body = "Estimados, en el archivo adjunto se encuentra la solicitud de Ticket con fecha " & TD & " .Su apoyo para generar la solicitud. Favor de confirmar recepción"
.Attachments.Add mydoc
.Send
End With
If Err.Number = 0 Then
SendMail_Gmail = True
MsgBox "El mail con archivo adjunto fue enviado con éxito", vbInformation, "AVISO"
Else
MsgBox "Se produjo el siguiente error: " & Err.Description, vbCritical, "Error nro " & Err.Number
End If
Kill mydoc
Kill mydoc1
Set OM = Nothing
Set OA = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True

Unload Me
Unload UserForm1
End Sub

1 respuesta

Respuesta
1

Te anexo la macro actualizada

Private Sub CommandButton4_Click()
    If OptionButton1 = False And optionbuton2 = False Then
        MsgBox "Selecciona un destinatario"
        Exit Sub
    End If
    If OptionButton1 = True Then
        destinatario = "[email protected]"
    Else
        destinatario = "[email protected]"
    End If
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim OA, OM As Object
    Dim NA As Variant
    Dim Path, TD, fn, mydoc As String
    TD = Format(Date, "dd/mm/yyyy")
    Path = ThisWorkbook.Path & "\"
    fn = ActiveSheet.Name
    mydoc = Path & fn & ".xlsx"
    mydoc1 = Path & fn & ".pdf"
    Dest = Cells(3, "E")
    Sheets(fn).Copy
    ActiveWorkbook.SaveAs Filename:=mydoc, FileFormat:=xlOpenXMLWorkbook
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    mydoc1, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    ActiveWorkbook.Close False
    Set OA = CreateObject("Outlook.Application")
    Set OM = OA.CreateItem(0)
    With OM
    .To = destinatario
    .CC = ""
    .BCC = ""
    .Subject = "Solicitud de Ticket"
    .Body = "Estimados, en el archivo adjunto se encuentra la solicitud de Ticket con fecha " & TD & " .Su apoyo para generar la solicitud. Favor de confirmar recepción"
    .Attachments.Add mydoc
    .Send
    End With
    If Err.Number = 0 Then
    SendMail_Gmail = True
    MsgBox "El mail con archivo adjunto fue enviado con éxito", vbInformation, "AVISO"
    Else
    MsgBox "Se produjo el siguiente error: " & Err.Description, vbCritical, "Error nro " & Err.Number
    End If
    Kill mydoc
    Kill mydoc1
    Set OM = Nothing
    Set OA = Nothing
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Unload Me
    Unload UserForm1
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola Dante Amor , muchas gracias por tu ayuda, estoy probando la macro pero cuando quiero enviar el mail me manda el mensaje de "seleccionar un destinatario"  aun cuando se haya seleccionado. 

El Userform1 es donde se  capturan los datos y en donde estan los OptionButton3 y OptionButton4 para elegir destinatario. una vez capturada la información dan clic en un botón que manda al Userform3 en donde ingrese tu macro para que se envié el correo.

Que consideras que este mal ?

Cambia esto

If OptionButton1 = False And optionbuton2 = False Then
        MsgBox "Selecciona un destinatario"
        Exit Sub
    End If
    If OptionButton1 = True Then
        destinatario = "[email protected]"
    Else
        destinatario = "[email protected]"
    End If

Por esto:

    If OptionButton3 = False And optionbutton4 = False Then
        MsgBox "Selecciona un destinatario"
        Exit Sub
    End If
    If OptionButton3 = True Then
        destinatario = "[email protected]"
    Else
        destinatario = "[email protected]"
    End If

Si los botones están en el userform1 entonces en el userform1 tienes que poner la macro

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Ese cambio ya lo había echo, pero se puede que la macro este en el Userform3 aunque los botones estén el Userform1? o forzosamente debe ir en el Userform1?

Pues sí se puede, pero no sé cómo están tus controles, prueba con esto:

    If userform1.OptionButton3 = False And userform1.optionbutton4 = False Then
        MsgBox "Selecciona un destinatario"
        Exit Sub
    End If
    If userform1.OptionButton3 = True Then
        destinatario = "[email protected]"
    Else
        destinatario = "[email protected]"
    End If

Estás en el userform1, llamas al userform3, pero no cierres el userform1, de lo contrario no tendrás el valor de los optionbutton

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas