Способи інтеграції MS ACCESS і MS Outlook, Інтеграція додатків і даних, Бази даних, статті

Даною статтею автор не ставить перед собою завдання розповісти про всі можливі способи взаємодії MS Access і MS Outlook або порівняти між собою кілька способів.
Завдання даної статті допомогти починаючим програмістам отримати початкову інформацію про шляхи інтеграції MS Access і MS Outlook і дати посилання на довідкові матеріали.


Вся інформація, наведена в цій статті була взята з HELP і з сайту msdn.microsoft.com


1. Зв’язування таблиць


Найпростіший спосіб це використовувати зв’язані таблиці.


Access дозволяє прілінковать таблиці MSOutlook. Досить просто викликати контекстне меню на закладці “Таблиці” і у вікні вибору файлу в якості типу файлів вказати “Outlook”. Далі потрібно вибрати які дані ви ходите прілінковать папку “вхідні”, “адресну книгу” або завдання. І ось вже у вікні Aсcess з’явилася пов’язана таблиця з відповідними даними. Дані в прілінкованних таблицях Outlook доступні тільки для читання.


Є тільки маленький нюанс, для того що б це стало можливим, потрібно встановити Microsoft Office Outlook в якості поштової програми за умовчанням.


2. Використання MS Outlook View Control.


MS Outlook View Control являє собою ActiveX який легко вбудовується у вашу програму (не обов’язково Access), і надає методи і властивості для роботи з Outlook. Це фактично Outlook c мініатюрі, зовнішній вигляд представлення даних нічим не відрізняється від подання цих даних в Outlook. Мінімального програмування достатньо для забезпечення користувачеві доступу до всіх основних функцій Outlook.


Як використовувати MS Outlook View Control у своїй програмі можна подивитися в моєму прикладі: hiprog.com/access/article.asp?idd=269


MS Outlook View Control для версій починаючи з Outlook2000 доступний для завантаження на сайті MS. І звичайно там є вся необхідна документація по роботі з ним. Ось декілька корисних посилань:
support.microsoft.com/kb/281618/
www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=831F957F-3190-48DA-A099-2BDBC7397623
support.microsoft.com/kb/q303835/
support.microsoft.com/kb/291407/


3. Використання технології COM.


Outlook як і інші продукти входять до складу MSOffice підтримують технологію COM, тобто доступ до його об’єктної моделі можливий з інших програм. Для роботи потрібно тільки одне, знати цю об’єктну модель.
Інформацію про об’єктах, методах, властивості і події Outlook можна почерпнути в довідковому файлі, він зазвичай розташований в папці з офісом, і називається VBAOLХХ.CHM (де ХХ – версія офісу).
Так само цей файл доступний на сайті MS:
www.microsoft.com/downloads/details.aspx?FamilyId=A1CEAD80-23E2-456F-8618-4DA50CC2C38C&displaylang=en


Там же можна знайти безліч прикладів:


Using Automation in Microsoft Office Access 2003 to Work with Microsoft Office Outlook 2003
Using Automation to Send a Microsoft Outlook Message
How to Create a New Contact Item in Outlook with Automation
Using Automation to Add a Task/Reminder to MS Outlook
How to automate Outlook 2002 from another program


Нижче наведено кілька функцій демонструють можливості даного способу доступу до даних Outlook:
(Зауваження, передбачається що в програмі встановлено посилання на MS Outlook)







“Вкладення. Якщо файл не існує, то буде помилка
.Attachments.Add “c:/Forum_ex.INF”
.Attachments.Add “c:/FORUM_EX.MDX”
. OriginatorDeliveryReportRequested = True “Повідомлення про доставку
. ReadReceiptRequested = True “Повідомлення про прочитання
. Save “збережемо лист
. Send “відправимо лист
End With
End Function Function CreateNewMeeting()
“Створює нову зустріч
Dim OL_App As Outlook.Application
Dim OL_ItemMeeting As Outlook.AppointmentItem
Dim OL_Attendee As Outlook.Recipient
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Створюємо нову зустріч
Set OL_ItemMeeting = OL_App.CreateItem(olAppointmentItem)
With OL_ItemMeeting
. Subject = “Пропоную попити пива”
. Body = “Виникла гостра необхідність зустрітися.”
. MeetingStatus = olMeeting “статус свстречі
“Призначимо зустріч на завтра о 18:00
.Start = Date + 1 + CDate(“18:00”)
. Duration = 120 “тривалість 2 години
“Встановимо нагадування за 1 годину до початку зустрічі
.ReminderSet = True
.ReminderMinutesBeforeStart = 60
“Додамо учасників зустрічі
Set OL_Attendee = .Recipients.Add(“Bill Gates”)
OL_Attendee. Type = olRequired “обязательинй учасник>
Set OL_Attendee = .Recipients.Add(“George W. Bush”)
OL_Attendee. Type = olOptional “не обязательинй учасник
“Місце зустрічі
. Location = “На розі біля Патріарших”
. Save “збережемо зустріч
. Display (True) “покажемо завдання в модальному вікні
End With
End Function Function ViewOLTasks()
“Виводить список View доступних для папки завдання і
“Відкриває список завдань c застосуванням випадкового доступного виду
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderTask As Outlook.MAPIFolder
Dim OL_View As View
Dim I AsInteger
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку завдань
Set OL_FolderTask = OL_NameSpace.GetDefaultFolder(olFolderTasks)
With OL_FolderTask
“Перебираємо всі доступні для папки види (Views)
Debug. Print “Доступні види:”
For Each OL_View In .Views
Debug . Print OL_View.Name
Next
“Повчати случаное число
Randomize
I = Int(.Views.Count * Rnd()) + 1
OL_FolderTask.Views (I). Apply “застосовуємо обраний вид
. Display “відкриваємо вікно в папкою” Завдання ”
End With
“Для прикладу отримаємо значення CurrenView через об’єкт Explorer
Debug. Print “Встановлено вид -” & OL_App.ActiveExplorer.CurrentView

End Function Function ViewOLCalendar()
“Відкриває паку каледарь
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderCalendar As Outlook.MAPIFolder
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку Календар
Set OL_FolderCalendar = OL_NameSpace.GetDefaultFolder(olFolderCalendar)
OL_FolderCalendar.Display “відкриваємо вікно в папкою” Календар ”

End Function

Function ListOLTasks()
“Список завдань
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderTask As Outlook.MAPIFolder
Dim OL_ItemTask As Outlook.TaskItem
Dim RecipientTask As Recipient
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку завдань
Set OL_FolderTask = OL_NameSpace.GetDefaultFolder(olFolderTasks)
“Перебираємо всі завдання в папці
For Each OL_ItemTask In OL_FolderTask.Items
With OL_ItemTask
“Для завдання виводимо тему, опис, дату початку, термін виконання, дату виконання і виконавців
Debug . Print “Tema: ” & .Subject
Debug. Print “Опис:” &. Body
Debug. Print “Початок:” &. StartDate
Debug. Print “Термін:” &. DueDate
Debug. Print “Виконано:” &. DateCompleted
Debug. Print “Виконавці:” &. Owner
“Якщо колекція одержувачів не порожня, то виводимо список одержувачів завдання
If .Recipients.Count > 0 Then
Debug. Print “Адреси одержувачів:”;
For Each RecipientTask In .Recipients
Debug . Print RecipientTask.Address;
Next
End If
End With
Debug . Print
Debug . Print “_______________________________________________”
Next
End Function Function ListOLInbox()
“Спіcок листів у папці” вхідні ”
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderMail As Outlook.MAPIFolder
Dim OL_ItemMail As Outlook.MailItem
Dim OL_Attachment As Outlook.Attachment
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку Вхідні
Set OL_FolderMail = OL_NameSpace.GetDefaultFolder(olFolderInbox)
“Перебираємо всі листи в папці
For Each OL_ItemMail In OL_FolderMail.Items
With OL_ItemMail
“Виводимо тему, час отримання, ім’я та адреса відправника та текст листа
Debug . Print .BodyFormat
Debug . Print “Tema: ” & .Subject
Debug. Print “Отримано:” &. ReceivedTime
Debug. Print “Ім’я та адреса відправника:” &. SenderName & “(” &. SenderEmailAddress & “)”
Debug. Print “Текст листа:” &. Body
“Якщо є вкладення виводимо назва вкладеного файлу
If .Attachments.Count > 0 Then
Debug. Print “Вкладення:”
For Each OL_Attachment In .Attachments
Debug . Print OL_Attachment.FileName
Next
End If
End With
Debug . Print “_______________________________________________”
Next
End Function
Function ListOLContacts()
“Спіcок Контактів
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderContsct As Outlook.MAPIFolder
Dim OL_ItemContact As Outlook.ContactItem
Dim OL_Attachment As Outlook.AddressEntry
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку« Контакти »
Set OL_FolderContsct = OL_NameSpace.GetDefaultFolder(olFolderContacts)
“Перебираємо всі контакти в папці
For Each OL_ItemContact In OL_FolderContsct.Items
With OL_ItemContact
“Виводимо ім’я, 3 можливих E-mail, домашній і мобліний телефони
Debug. Print “Ім’я:” &. Subject
Debug . Print “E-mai №1: ” & .Email1Address
Debug . Print “E-mai №2: ” & .Email2Address
Debug . Print “E-mai №3: ” & .Email3Address
Debug. Print “Домашній телефон:” &. HomeTelephoneNumber
Debug. Print “Мобільний телефон:” &. MobileTelephoneNumber
End With
Debug . Print “_______________________________________________”
Next
End Function Function ListOLMeeting()
“Список зустрічей призначених на наступний тиждень
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderCalendar As Outlook.MAPIFolder
Dim OL_CalendarItems As Outlook.Items
Dim OL_MeetingItem As Object
Dim OL_Attendee As Recipient
“Отримуємо об’єкт Outlook
Set OL_App = CreateObject(“Outlook.Application”)
“Отримуємо Namespace
Set OL_NameSpace = OL_App.GetNamespace(“MAPI”)
“Отримуємо посилання на папку календар
Set OL_FolderCalendar = OL_NameSpace.GetDefaultFolder(olFolderCalendar)
“Використовуючи метод Restrict відбираємо тільки ті записи
“У яких властивість start> більше сьогоднішньої дати і менше ніж сьогодні плюс 7 днів
“Тобто ті які призначені на слід тиждень
Set OL_CalendarItems = OL_FolderCalendar.Items.Restrict(“[start]> “” & Date & “” And [start] <= “” & Date + 7 & “””)
For Each OL_MeetingItem In OL_CalendarItems “перебираємо всі відібрання записи
With OL_MeetingItem
“Якщо знайдена запис – зустріч то виводить інформацію про
If .Class = olAppointment Then
Debug . Print “Tema: ” & .Subject
Debug. Print “Опис:” &. Body
Debug. Print “Початок:” &. Start
Debug. Print “Тривалість:” &. Duration & “хв.”
Debug. Print “Місце зустрічі:” &. Location
“Якщо колекція учасників одержувачів не порожня, то виводимо список учасників
If .Recipients.Count > 0 Then
Debug. Print “Запрошені:”,
For Each OL_Attendee In .Recipients
Debug . Print OL_Attendee.Name; “; “;
Next
End If
End If
End With
Debug . Print
Debug . Print “_______________________________________________”
Next
End Function

Function OpenExistOLContacts(strNameContact AsString )
“Відкриває існуючий контакт в імені яких міститься передане значення
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderContsct As Outlook.MAPIFolder
Dim OL_ItemContact As Outlook.ContactItem
Dim OL_Attachment As Outlook.AddressEntry

Set OL_App = CreateObject (“Outlook.Application”) “отримуємо об’єкт Outlook
Set OL_NameSpace = OL_App.GetNamespace (“MAPI”) “отримуємо Namespace
“Отримуємо посилання на папку« Контакти »
Set OL_FolderContsct = OL_NameSpace.GetDefaultFolder(olFolderContacts)
For Each OL_ItemContact In OL_FolderContsct.Items “перебираємо всі контакти в папці
“Якщо заголовок контакту містить шуканий рядок, то відкриваємо його
If InStr(1, OL_ItemContact.Subject, strNameContact) Then OL_ItemContact.Display
Next
End Function

Function OpenExistOLTasks()
“Відкриває все не закриті завдання
Dim OL_App As Outlook.Application
Dim OL_NameSpace As Outlook.NameSpace
Dim OL_FolderTask As Outlook.MAPIFolder
Dim OL_ItemTask As Outlook.TaskItem
Dim RecipientTask As Recipient

Set OL_App = CreateObject (“Outlook.Application”) “отримуємо об’єкт Outlook
Set OL_NameSpace = OL_App.GetNamespace (“MAPI”) “отримуємо Namespace
“Отримуємо посилання на папку завдань
Set OL_FolderTask = OL_NameSpace.GetDefaultFolder(olFolderTasks)
For Each OL_ItemTask In OL_FolderTask.Items “перебираємо всі завдання в папці
If OL_ItemTask.Status <> olTaskComplete Then OL_ItemTask.Display
Next
End Function Function CreateNewTask()
“Створює нове завдання повторювану кожні 3 тижні
“І назначенает її іншому ответсветнному
Dim OL_App As Outlook.Application
Dim OL_ItemTask As Outlook.TaskItem
Dim RecipientTask As Recipient
Dim OL_Pattern As Outlook.RecurrencePattern

Set OL_App = CreateObject (“Outlook.Application”) “отримуємо об’єкт Outlook
Set OL_ItemTask = OL_App.CreateItem (OLTaskItem) “створюємо нову задачу
Set OL_Pattern = OL_ItemTask.GetRecurrencePattern “отримуємо посилання на об’єкт
“RecurrencePattern містить інформацію про періодичність завдання або зустрічі
With OL_Pattern
“Встановлюємо частоту повторень (щотижня)
.RecurrenceType = olRecursWeekly
“Інтервал повторень (раз в 2 тижні)
.Interval = 2
“Створювати нову завдання з вказаною частотою після завершення предудущей
.Regenerate = True
End With
With OL_ItemTask
. Subject = “Tema завдання”
. Body = “Опис завдання”
. StartDate = Date “дата початку виконання завдання
. DueDate = DateAdd (“y”, 5, Date) “дата закінчення
. Assign “призначимо цю задачу нікому Іванову
Set RecipientTask = OL_ItemTask.Recipients.Add (“Іванов Іван”)
. Save “збережемо завдання
. Display (True) “покажемо завдання в модальному вікні
End With
End Function Function CreateNewMemo()
“Створює новий лист із вкладенням для декількох адресатів
Dim OL_App As Outlook.Application
Dim OL_ItemMail As Outlook.MailItem
Dim RecipientTask As Recipient
Dim OL_Pattern As Outlook.RecurrencePattern

Set OL_App = CreateObject (“Outlook.Application”) “отримуємо об’єкт Outlook
Set OL_ItemMail = OL_App.CreateItem (olMailItem) “створюємо новий лист
With OL_ItemMail
.To = “ osmor@mail.ru Цей e-mail захищений від спам-ботів. Для його перегляду у вашому браузері повинна бути включена підтримка Java-script “” адреса одержувача
.CC = ” osmor@mail.ru Цей e-mail захищений від спам-ботів. Для його перегляду у вашому браузері повинна бути включена підтримка Java-script “” копія
. BodyFormat = olFormatHTML “формат листа
. Subject = “Звіт з продажу за” & CStr (Date) “заголовок листа
“Текст листа. Для краси HTML
.HTMLBody = “<body><div align=”center”> <table width=”50%” border=”1″>” & _

Продажі по салонах за” & CStr (Date) & “” & _

Салон

Сума” & _

Олексіївська

25021

Маросейка 28 452″ & _

Мисливський ряд

22245


Не беруся судити який з перерахованих вище способів краще … все залежить від поставленого завдання.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*