Тут вопросы назрели. Нужно периодически содержимое папки Календарь сливать во внешний файл. Здесь нашёл пример работы с оутглюком. Уже спасибо. Получилось вот что:
- Код: Выделить всё
Option Explicit
Sub new_ask_makros()
Dim s$
Dim oNS As Outlook.NameSpace
Dim oCalendar As Outlook.MAPIFolder
Dim oAppointment As Outlook.AppointmentItem
Set oNS = Outlook.Application.GetNamespace("mapi")
Set oCalendar = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar)
For Each oAppointment In oCalendar.Items
s = s & oAppointment.Start & " "
s = s & oAppointment.Subject & vbNewLine
Next
Debug.Print s
End Sub
Т.е. доступ к календарю у меня уже есть. Это уже хорошо. Проблема в том, что во-первых, Item'ы упорядочены по времени их создания, во-вторых, их может быть много, а нужны лишь за апределённый период. Пробовал Find и Sort как рекомендуют здесь, но чего-то пока не работает. Делал так:
- Код: Выделить всё
oCalendar.Items.Sort "[Start]"
и так
- Код: Выделить всё
oCalendar.Items.GetFirst
Set v = oCalendar.Items.Find("[Subject] = 'test")
В первом случае не сортирует, во втором ищет только полное совпадение, а на Like ругается: "Не верные условия". А как искать по полю типа Date, например Start, я вообще не знаю. На такое вот ругается "Конфликт типов или значение "12/08/2006 13:30:00" в условии не верно"
- Код: Выделить всё
Set v = oCalendar.Items.Find("[Start] = '12/08/2006 13:30:00'")
А на такое
- Код: Выделить всё
Set v = oCalendar.Items.Find("[Start] = #12/08/2006 13:30:00#")
"Конфликт типов или значение "0" в условии не верно"
Т.е. надо всё ручками в цикле проверять, а записей может быть много, да и не красиво как-то.
Это было раз. Теперь нумбер два. Что бы каждый раз не лопатить все значения, можно же повесить обработчик на событие. Вот чего получилось
- Код: Выделить всё
Dim WithEvents moCalendarItems As Outlook.Items
Private Sub Application_MAPILogonComplete()
Dim oNS As Outlook.NameSpace
Set oNS = Outlook.Application.GetNamespace("mapi")
Set moCalendarItems = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items
End Sub
Правильно ли я сделал или надо как-то по другому? Кроме того это всё работает только при уровнях безопасности низкий и очень низкий, а для высокого и супер-пупер -- автоматически выключаются, если не подписаны какой-то там сигнатурой. Гиде её взять?