Todavía soy bastante nuevo en VBA (lo siento si esta es una pregunta tonta), aunque ya estoy codificando aplicaciones pequeñas desde hace algunos años para botones similares en Excel o algo así. Pero esto nunca me ha quedado claro; Quiero implementar esta función de aviso BCC en un bucle automático para Outlook. Cuando ejecuto la macro, funciona bien hasta que reinicio Outlook. ¿Por qué tengo que reactivar esta macro una y otra vez cuando inicio Outlook? Lo coloqué en ThisOutlooksession, habilité todas las macros (por cierto, ¿es necesario habilitar esto para siempre? Me parece inseguro) pero no tuve éxito. Si alguien pudiera ayudarme, ¡sería genial! Gracias de antemano.
Public WithEvents myOlApp As Outlook.Application
Public Sub Initialize_handler()
Set myOlApp = CreateObject("Outlook.Application")
End Sub
Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "The BCC Field is empty!"
If Item.BCC = "" Then
If msgbox(prompt, vbYesNo + vbQuestion, "BCC Field") = vbNo Then
Cancel = True
End If
End If
End Sub
Respuesta1
Para ejecutar automáticamente Initialize_handler
:
Private Sub Application_startup()
Initialize_handler
End Sub
Puedes simplificar con:
Private Sub Application_startup()
Set myolApp = CreateObject("Outlook.Application")
End Sub
Puedes simplificar eliminando todo tu código y usando esto en su lugar:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "The BCC Field is empty!"
If Item.BCC = "" Then
If MsgBox(prompt, vbYesNo + vbQuestion, "BCC Field") = vbNo Then
Cancel = True
End If
End If
End Sub
Respuesta2
Usar Application_Startup()
en lugar de Initialize_handler()
.