Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Как сохранить вложения Outlook на диск Добавлено: 06.10.07 04:59  

Автор вопроса:  Robert
Привет!
У меня такой вопрос: как сохранить вложенный файл в Outlook на диск, используя VB? Напишите пожалуйста код полностью!

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #1
Добавлено: 06.10.07 16:35
Я храню коллекцию сканированных фотографий работников в отдельной папке типа Контакты в MS Outlook.

Вот пример на этой основе - сохраняет первый прикрепленный файл к первому контакту в этой папке:

Sub SaveFileFromItem()
    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-сайт: www.genyaa.nm.ru
 Профиль | | #3
Добавлено: 06.10.07 19:26
В этом случае меняется тип получаемого Item и выбор папки:
Sub SaveFileFromItem()
    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-сайт: www.genyaa.nm.ru
 Профиль | | #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
    ;Dim 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-сайт: www.genyaa.nm.ru
 Профиль | | #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-сайт: www.genyaa.nm.ru
 Профиль | | #10
Добавлено: 07.10.07 10:55
Правильно будет, если Вы сначала будете иметь представление об основных понятиях языка VBA и об объектной модели MS Outlook... и, главное, будете прилагать и свое старание к решению своей задачи.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам