Sub TrashingMail()
Set myOlApp = CreateObject("Outlook.Application")
Dim myNameSpace As NameSpace
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Dim myExplorer As Explorer
Set myExplorer = myOlApp.ActiveExplorer
folderType = myExplorer.CurrentFolder.DefaultItemType
If TypeName(myExplorer) = "Nothing" Or folderType <> 0 Then
GoTo invalidMailbox
End If
Set thisFolder = myExplorer.CurrentFolder
Do Until thisFolder.Parent = myNameSpace
Set thisFolder = thisFolder.Parent
Loop
Set accountFolder = thisFolder
Dim selectedItems As Selection
Set selectedItems = myExplorer.Selection
Dim currentMailItem As MailItem
Dim iterator As Long
For iterator = 1 To selectedItems.Count
Set currentMailItem = selectedItems.Item(iterator)
Set thisFolder = myExplorer.CurrentFolder
Set trashFolder = accountFolder.Folders("Удаленные")
currentMailItem.Move (trashFolder)
Next
Dim myBar As CommandBar
Set myBar = Application.ActiveExplorer.CommandBars("Menu Bar")
Dim myButtonPopup As CommandBarPopup
Set myButtonPopup = myBar.Controls("&Правка")
Dim myButtonPopupP As CommandBarPopup
Set myButtonPopupP = myButtonPopup.Controls("О&чистить")
Dim myButton As CommandBarButton
Set myButton = myButtonPopupP.Controls("Очистить помеченные &элементы для всех учетных записей")
SendKeys "~"
myButton.Execute
Exit Sub
invalidMailbox:
MsgBox ("Это не почтовая папка!")
Exit Sub
End Sub
Скрипт VBA для Outlook срабатывает лишь раз
Код:
Скрипт должен перемещать удаляемые письма в папку "Удаленные". Мало того, скрипт работает. Если удалить макросом письмо или группу писем, а потом в течение минуты-двух еще раз запустить макрос, то выдает: "Сбой операции.Невозможно найти объект" и указывает на строку:
Код:
currentMailItem.Move (trashFolder)
Если применить макрос, подождать минуты две, а потом снова применить макрос, то работает как часы. То есть проблема чисто в том, что запускать макрос нужно не чаще раза в две минуты.:confused:
Пытался следить за переменными, вроде все нормально, правильные данные в них храняться. Я не знаю VB, так что нужна помощь.