Страница: 1 |
Страница: 1 |
Вопрос: Как сохранить вложения Outlook на диск
Добавлено: 06.10.07 04:59
Автор вопроса: Robert
Привет!
У меня такой вопрос: как сохранить вложенный файл в Outlook на диск, используя VB? Напишите пожалуйста код полностью!
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #1
Добавлено: 06.10.07 16:35
Я храню коллекцию сканированных фотографий работников в отдельной папке типа Контакты в MS Outlook.
Вот пример на этой основе - сохраняет первый прикрепленный файл к первому контакту в этой папке:
Dim myOL As NameSpace, myCF As MAPIFolder, myCT As ContactItem
Dim myAT As Attachment
Set myOL = Outlook.Application.GetNamespace("MAPI"
'выбираем подпапку Photos (тип Contacts) в папке "zWorkers"
Set myCF = myOL.Folders("zWorkers".Folders("Photos"
'вибираем первый контакт в коллекции
Set myCT = myCF.Items(1)
'вибираем перый прикрепленный файл к контакту
Set myAT = myCT.Attachments(1)
'сохраняем прикрепленный файл в папке temp на C:
myAT.SaveAsFile ("C:\Temp\" & myAT.FileName)
End Sub
Номер ответа: 2
Автор ответа:
Robert
Вопросов: 2
Ответов: 5
Профиль | | #2
Добавлено: 06.10.07 16:54
А если мне надо сохранить из папки "Входящие"?
Номер ответа: 3
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #3
Добавлено: 06.10.07 19:26
В этом случае меняется тип получаемого Item и выбор папки:
Dim myOL As NameSpace, myCF As MAPIFolder, myMS As MailItem
Dim myAT As Attachment
Set myOL = Outlook.Application.GetNamespace("MAPI"
Set myCF = myOL.GetDefaultFolder(olFolderInbox)
Set myMS = myCF.Items(1)
Set myAT = myMS.Attachments(1)
myAT.SaveAsFile ("C:\Temp\" & myAT.FileName)
End Sub
Номер ответа: 4
Автор ответа:
Robert
Вопросов: 2
Ответов: 5
Профиль | | #4
Добавлено: 06.10.07 22:06
Супер! Все получилось! Огромное спасибо! А где можно взять материал про интеграцию Outlook+VB? Я искал по форуму, но ссылки все старые... Может у тебя есть что-нибудь?
Номер ответа: 5
Автор ответа:
Robert
Вопросов: 2
Ответов: 5
Профиль | | #5
Добавлено: 06.10.07 22:10
Можно еще два вопроса? ))) Просто знаний по этой теме маловато...)
1) Как будут выглядить программный код, если файлов несколько
2) Как мне изменить код, если к примеру нужны файлы с расширением DAT.
Заранее спасибо!
Номер ответа: 6
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #6
Добавлено: 06.10.07 22:49
Про интеграцию у меня ничего нет... читаю просто Help по VBA + здравый смысл и знания VBA Excel... Да, и, честно говоря, у меня не так уж и много опыта в Outlook'e.
по п.1) - см. конструкцию цикла For each ... Next
по п.2) - см. конструкцию If ... Then ... End If
Номер ответа: 7
Автор ответа:
Robert
Вопросов: 2
Ответов: 5
Профиль | | #7
Добавлено: 06.10.07 23:36
Написал код, но не работает...
Dim myOL As NameSpace, myCF As MAPIFolder, myMS As MailItem
 im myAT As Attachment
Set myOL = Outlook.Application.GetNamespace("MAPI"
Set myCF = myOL.GetDefaultFolder(olFolderInbox)
Set myMS = myCF.Items
Set myAT = myMS.Attachments
For Each myAT In myMS.Attachments
myAT.SaveAsFile ("C:\Temp\" & myAT.FileName)
Next
For Each myAT In myMS.Attachments
myAT.SaveAsFile ("C:\Temp\" & myAT.FileName)
Next
Номер ответа: 8
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #8
Добавлено: 06.10.07 23:50
А где здравый смысл?
myCF.Items - это коллекция объектов... в каждом из них есть по своей коллекции Attachments... не получится обратиться ко всем Attachments во всех Items сразу... только через перебор каждого элемента из Items (если это нужно).
И зачем два одинаковых цикла?
Номер ответа: 9
Автор ответа:
Robert
Вопросов: 2
Ответов: 5
Профиль | | #9
Добавлено: 06.10.07 23:57
Два цикла, это случайно...))) А как тогда правильно будет?
Номер ответа: 10
Автор ответа:
GenyaA
Вопросов: 0
Ответов: 185
Web-сайт:
Профиль | | #10
Добавлено: 07.10.07 10:55
Правильно будет, если Вы сначала будете иметь представление об основных понятиях языка VBA и об объектной модели MS Outlook... и, главное, будете прилагать и свое старание к решению своей задачи.