Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MS ACCESS и MS Outlook
 
 автор: Grinders80   (19.08.2008 в 19:16)   личное сообщение
 
 

Пожалуйста подскажите, возможно ли каким либо образом вытащить в ACCESS 2007 вложение из письма Outlook. А то при создании связанной таблици с папкой Outlook, в таблице показывает только что вложение имеется.
Помогите или подскажите пожалуйста (пока еще плохо разбираюсь).
В инете и на форуме уже все пересмотрел.

Нашел в инете следующее (немогу с этим рзобраться):
Вытаскивает вложение из сообщения с заданной темой и сохраняет его как файл с заданным именем
MySubject = "Обновление данных" 'Установка заданной темы
MyFilePath = "C:\Temp\new.mdb" 'Установка названия файла
Call GetMessage(MySubject, MyFilePath)

Function GetMessage(ByVal FindSubject As String, ByVal MyFilePath As String)
Dim MySubject As String
Dim myOlApp As Object
Dim myNameSpace As Object
Dim MyFolder As Object
Dim myItem As Object
Dim myAttachments As Object
Dim i As Long, x As Long
Dim OlNotRunning As Boolean


On Error Resume Next
Set myOlApp = GetObject(, "Outlook.Application")
If Err.Number <> 0 Then
OlNotRunning = True
Err.Clear
Set myOlApp = CreateObject("Outlook.Application")
End If
'=====================================================
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set MyFolder = myNameSpace.GetDefaultFolder(6)
x = MyFolder.Items.count
With MyFolder
For i = 1 To x
Set myItem = .Items(i)
MySubject = myItem.Subject

If MySubject = FindSubject Then
Set myAttachments = myItem.Attachments
'Сохранение с заданным именем файла вложения
myAttachments.Item(1).SaveAsFile MyFilePath
'...или c исходным именем вложения:
'myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName
myItem.Delete
Exit For
End If
Next i
End With

Помогите начинающему советом.
Заранее всем спасибо!!!

  Ответить  
 
 автор: osmor   (19.08.2008 в 19:24)   личное сообщение
 
 

А в чем разобраться?
myAttachments.Item(1).SaveAsFile MyFilePath
это и есть сохранение

  Ответить  
 
 автор: Grinders80   (19.08.2008 в 21:47)   личное сообщение
 
 

Спасибо!!!
Хорошо что на верном пути.
Но всеравно остается куча вопрософф.

Я как понимаю следующий код задается предположим кнопке:
MySubject = "Обновление данных" 'Установка заданной темы
MyFilePath = "C:\Temp\new.mdb" 'Установка названия файла
Call GetMessage(MySubject, MyFilePath)

При нажатии на которую выполняет вышеуказанная функция, но потом как и каким образом сохраняется вложение и из какого письма? или создается новый файл new.mdb со всеми вложениями?
Вышеуказанный код запустил и никакой реакции (даже не выдает никаких ошибок)
Вот впринципе и все вопросы.
Помогите пожалуйста разобраться.
Еще раз спасибо!!!

  Ответить  
 
 автор: osmor   (20.08.2008 в 08:48)   личное сообщение
 
 

Сообщения об ошибках отключены кодом

On Error Resume Next

Попробуйте выполнить функцию в режиме отладки по шагам, возможно у вас не устанавливается связь с MS Outlook
Вы кстати не путаете MS Outlook и Outlook Express ?

  Ответить  
 
 автор: Grinders80   (20.08.2008 в 09:48)   личное сообщение
 
 

Спасибо osmor за помощь. Все помогло без отладки. MS Outlook и Outlook Express нивкоем случае не путаю.
Все разобрался. Все от моей невнимательности. Все вытаскивает и сохранят.
Но осталось всетаки несколько вопрософф по этой теме.
1. При вытаскивании вложения из письма, само письмо удаляется. Как с этим бороться?
2. Возможно ли идентифицировать письмо не по "теме" а по какому-то другому признаку? Возможно же 2 и более письма с одной и тойже темой.
3. При сохранении файла с исходным именем myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName, под DisplayName я так понимаю подразумевается исходные имя и расширение файла. И тогда получается неприйдется в событии кнопки задавать значение MyFilePath.

Направьте на путь истинный.
Спасибо!!!

  Ответить  
 
 автор: osmor   (20.08.2008 в 11:12)   личное сообщение
 
 


x = MyFolder.Items.count ' Определяем кол-во писем в папке
With MyFolder
For i = 1 To x ' Все письма
Set myItem = .Items(i) 'Получаем ссылку на конкретное письмо
MySubject = myItem.Subject ' получаем заголовок письма 

If MySubject = FindSubject Then  ' если заголовок равен заданному заголовку
Set myAttachments = myItem.Attachments ' получаем все вложения
'Сохранение с заданным именем файла вложения
myAttachments.Item(1).SaveAsFile MyFilePath ' сохраняем ПЕРВОЕ вложение с указанным именем
'...или c исходным именем вложения:
'myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName 
myItem.Delete ' удаляем письмо
Exit For  'Выходим из цикла перебирающего все письма т.к. найдено искомое
End If ' конец If проверки темы пиьса 
Next i ' конец цикла перебирающего все письма
End With

поправьте код под ваши нужды
Если Вы будете сохранять вложение по имени, то MyFilePath использоваться не будет

  Ответить  
 
 автор: Grinders80   (20.08.2008 в 11:27)   личное сообщение
 
 

С первым вопросом разобрался.
Osmor правильно я думаю:
В событии кнопки пишем следующее:
MySubject = "Обновление данных" 'Установка заданной темы
Call GetMessage(MySubject, MyFilePath)
без задания MyFilePath.

А в теле фукции соответственно меняем myAttachments.Item(1).SaveAsFile MyFilePath на

на myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName
Я все так и проделал но ничего невыходит.
Буду дальше ковырять.
Если незатруднит то буду рад совету.
Спасибо!!!

  Ответить  
 
 автор: osmor   (20.08.2008 в 12:26)   личное сообщение
 
 

Если вы не собираетесь использовать MyFilePath то его можно просто убрать из функции
вместо

Function GetMessage(ByVal FindSubject As String, ByVal MyFilePath As String)


Function GetMessage(ByVal FindSubject As String)

и вызывать
Call GetMessage(MySubject)

Скорее всего что -то происходит, попробуйте поискать файл с именем вложения в папках Мои документы, Temp или лучше на всем диске
Просто поскольку путь не указан, файл сохраняется в папку по умолчанию или в ту куда был сохранен последний файл.
Для задания пути можно добавить его к имени файла в конструкции
myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName
например так

myAttachments.Item(1).SaveAsFile "C:\temp\" & myAttachments.Item(1).DisplayName

Или использовать освободившийся аргумент MyFilePath передавая не имя файла, а имя папки

myAttachments.Item(1).SaveAsFile MyFilePath & myAttachments.Item(1).DisplayName


Вызов функции тогда будет выглядеть так :

MySubject = "Обновление данных" 'Установка заданной темы
MyFilePath = "C:\temp\"
Call GetMessage(MySubject, MyFilePath)

  Ответить  
 
 автор: Grinders80   (20.08.2008 в 12:49)   личное сообщение
 
 

Osmor СПАСИБО БОЛЬШОЕ.
Все оказалось очень просто, все вложеия как и было сказано выше сохранились в папке Мои документы.
Еще раз спасибо!!!
Все вопросы исчерпаны полностью по этой теме.
Далее будемс ковырять все самостоятельно.
Главное было начать.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList