Ventana emergente al ejecutar Macro
En la parte final de la ejecución del macro me aparece la siguiente ventana:
¿Como puedo incluir una instrucción en el macro para que selecciones la opción "Publico" y seleccione enviar.
1 respuesta
Microsoft Azure Information Protection, puedes usar el siguiente código:
Application.DisplayAlerts = False ' Desactiva las alertas ' Código de tu macro aquí ' Activa la ventana emergente On Error Resume Next Application.Dialogs(xlDialogSendMail).Show arg1:="Público", arg2:="Enviar" On Error GoTo 0 Application.DisplayAlerts = True ' Vuelve a activar las alertas
He incluido la parte indicada en el código y me sale el siguiente error:
Este es el código completo que se tiene:
Sub enviarMail()
Dim App As Object
Dim Mail As Object
Dim Correo As Workbook
Dim Base As Worksheet
Dim Ruta As String
Dim File As String
Dim Extension As String
Dim Msg As String
For i = 5 To Range("A" & Rows.Count).End(xlUp).Row
Set App = CreateObject("Outlook.Application")
Set Mail = App.CreateItem(0)
Set Correo = Workbooks(ThisWorkbook.Name)
Set Base = Correo.Sheets("datos")
'Cuerpo del mensaje
Msg = Msg & "Como "
Msg = Msg & Base.Range("H" & i).Value
Msg = Msg & " de "
Msg = Msg & Base.Range("G" & i).Value
Msg = Msg & " actualmente estamos examinando los estados financieros con corte al "
Msg = Msg & Base.Range("I" & i).Value
Msg = Msg & ",con relación a dicho examen, agradecemos dar respuesta a la circularización adjunta. " & "<br><br>"
Msg = Msg & vbNewLine
Msg = Msg & "Para que este proceso sea eficaz y después de haber firmado y descrito su respuesta por favor envíela directamente a Ejemplo S.A.S., a la siguiente dirección "
Msg = Msg & Base.Range("M" & i).Value
Msg = Msg & " en "
Msg = Msg & Base.Range("N" & i).Value
Msg = Msg & ",con atención a "
Msg = Msg & Base.Range("J" & i).Value
Msg = Msg & ", o a los correos electrónicos "
Msg = Msg & Base.Range("L" & i).Value & vbNewLine
With Mail
.Display
.To = Base.Range("A" & i).Value
.CC = Base.Range("L" & i).Value
.Subject = Base.Range("B" & i).Value
.Attachments.Add (Base.Range("D" & i).Value)
.HTMLBody = "<Body><p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Estimado(a) Buen día," & "</span>" & _
"<p><span style='font-size:13;font-family:Trebuchet MS;'>" & Msg & "</span>" & _
"<p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Quedamos atentos, feliz día" & "</span>" & _
"<p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Cordialmente," & "</p>
" & .HTMLBody
Application.DisplayAlerts = False ' Desactiva las alertas
' Código de tu macro aquí
' Activa la ventana emergente
On Error Resume Next
Application.Dialogs(xlDialogSendMail).Show arg1:="Público", arg2:="Enviar"
On Error GoTo 0
Application.DisplayAlerts = True ' Vuelve a activar las alertas
.Send
End With
Next i
MsgBox "Envío realizado con éxito...", vbInformation, "Notificación"
End Sub
De antemano muchas gracias por sus comentarios
El error que estás experimentando se debe a que estás intentando usar "Público" como argumento en la función Application. Dialogs(xlDialogSendMail). Show, pero en realidad, este argumento debe ser una dirección de correo electrónico o una lista de direcciones de correo electrónico a las que se enviará el mensaje. Ese es el motivo por el que obtienes el error "Microsoft Outlook no reconoce 'Público'".
Si deseas enviar el correo a una dirección de correo específica, simplemente modifica el argumento con la dirección deseada en lugar de "Público". Por ejemplo:
' Supongamos que quieres enviar el correo a "[email protected]" Application.Dialogs(xlDialogSendMail).Show arg1:="[email protected]", arg2:="Enviar"
Sin embargo, si deseas que el correo se envíe automáticamente sin mostrar la ventana emergente de Outlook, puedes eliminar la parte del código que muestra el diálogo y usar el método .Send directamente. Aquí está el código modificado:
Sub enviarMail() Dim App As Object Dim Mail As Object Dim Correo As Workbook Dim Base As Worksheet Dim Ruta As String Dim File As String Dim Extension As String Dim Msg As String For i = 5 To Range("A" & Rows.Count).End(xlUp).Row Set App = CreateObject("Outlook.Application") Set Mail = App.CreateItem(0) Set Correo = Workbooks(ThisWorkbook.Name) Set Base = Correo.Sheets("datos") 'Cuerpo del mensaje ' Código del mensaje aquí... With Mail .To = Base.Range("A" & i).Value .CC = Base.Range("L" & i).Value .Subject = Base.Range("B" & i).Value .Attachments.Add (Base.Range("D" & i).Value) .HTMLBody = "<Body><p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Estimado(a) Buen día," & "</span>" & _ "<p><span style='font-size:13;font-family:Trebuchet MS;'>" & Msg & "</span>" & _ "<p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Quedamos atentos, feliz día" & "</span>" & _ "<p><span style='font-size:13;font-family:Trebuchet MS;'>" & "Cordialmente," & "</p>" & .HTMLBody 'Envía el correo automáticamente sin mostrar la ventana emergente .Send End With Next i MsgBox "Envío realizado con éxito...", vbInformation, "Notificación" End Sub
Ahora, el correo se enviará directamente a las direcciones de correo especificadas sin mostrar la ventana emergente de Outlook. Asegúrate de tener la información correcta en las celdas correspondientes a las direcciones de correo electrónico (columna A) y las direcciones de copia (columna L) en la hoja de cálculo "datos".
- Compartir respuesta