Я все еще новичок в VBA (так что извините, если это глупый вопрос), хотя я уже несколько лет пишу небольшие приложения для кнопок типа «Мне нравится» в Excel или что-то в этом роде. Но это мне никогда не было понятно; я хочу реализовать эту функцию запроса BCC в автоматическом цикле для Outlook. Когда я запускаю макрос, он работает нормально, пока я не перезапускаю Outlook. Почему мне приходится снова и снова активировать этот макрос каждый раз, когда я запускаю Outlook? Я поместил его в ThisOutlooksession, включил все макросы (кстати; нужно ли его включать навсегда? мне кажется небезопасным), но безуспешно. Если бы кто-то мог мне помочь, это было бы здорово! Заранее спасибо.
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
решение1
Для автоматического запуска Initialize_handler
:
Private Sub Application_startup()
Initialize_handler
End Sub
Вы можете упростить это с помощью:
Private Sub Application_startup()
Set myolApp = CreateObject("Outlook.Application")
End Sub
Вы можете упростить задачу, удалив весь свой код и используя вместо него следующее:
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
решение2
Используйте Application_Startup()
вместо Initialize_handler()
.