Outlook VBA: переместить новый (несохраненный) элемент в папку
-
08-10-2019 - |
Вопрос
Я пытаюсь вызвать новый элемент Outlook, который будет создан в конкретном магазине, когда пользователь его спасает. Обычно, если есть несколько учетных записей, когда вы создаете новый элемент (например, нажмите Ctrl + Shift + K для задачи), новый элемент создан в папке по умолчанию для активной учетной записи.
Я пытался перехватить инспектор для нового предмета и перемещать его, но он не имел никакого эффекта. Вот суть кода (проверка, чтобы избежать не новых элементов отсутствует):
Dim WithEvents inspectors As Outlook.inspectors
Private Sub Application_Startup()
Set inspectors = Application.inspectors
End Sub
Private Sub inspectors_NewInspector(ByVal Inspector As Inspector)
Dim item As Object
Set item = Inspector.CurrentItem
If item Is Nothing Then Exit Sub
If item.Class <> olTask Then Exit Sub
item.Move Application.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks)
End Sub
К сожалению, метод движения не имеет никакого эффекта. Есть идеи?
Решение
Вы не можете перемещать несогласованные предметы. Как вы создаете товар?
Использовать Items.Add
Способ добавить элемент (т.е. создать его) в определенной папке. Если вы используете метод CreateITem, он всегда будет создан в папке по умолчанию для этого типа элемента.
Вместо того, чтобы попытаться использовать существующую функциональность, чтобы попытаться создать задачу (которая я не уверен, возможно или просто), я думаю, вам лучше создавать макрос, который создает задачу в папке, которую вы хотите, а затем добавьте макрос кнопка панели инструментов. Или вы можете попробовать и сохранить элемент сначала, затем переместить его. Обратите внимание, что ваш текущий код перемещает элемент к папке задач по умолчанию.