|
|
|
| Пожалуйста подскажите, возможно ли каким либо образом вытащить в 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
Помогите начинающему советом.
Заранее всем спасибо!!! | |
|
| |
|
|
|
| А в чем разобраться?
myAttachments.Item(1).SaveAsFile MyFilePath
это и есть сохранение | |
|
| |
|
|
|
| Спасибо!!!
Хорошо что на верном пути.
Но всеравно остается куча вопрософф.
Я как понимаю следующий код задается предположим кнопке:
MySubject = "Обновление данных" 'Установка заданной темы
MyFilePath = "C:\Temp\new.mdb" 'Установка названия файла
Call GetMessage(MySubject, MyFilePath)
При нажатии на которую выполняет вышеуказанная функция, но потом как и каким образом сохраняется вложение и из какого письма? или создается новый файл new.mdb со всеми вложениями?
Вышеуказанный код запустил и никакой реакции (даже не выдает никаких ошибок)
Вот впринципе и все вопросы.
Помогите пожалуйста разобраться.
Еще раз спасибо!!! | |
|
| |
|
|
|
| Сообщения об ошибках отключены кодом
Попробуйте выполнить функцию в режиме отладки по шагам, возможно у вас не устанавливается связь с MS Outlook
Вы кстати не путаете MS Outlook и Outlook Express ? | |
|
| |
|
|
|
| Спасибо osmor за помощь. Все помогло без отладки. MS Outlook и Outlook Express нивкоем случае не путаю.
Все разобрался. Все от моей невнимательности. Все вытаскивает и сохранят.
Но осталось всетаки несколько вопрософф по этой теме.
1. При вытаскивании вложения из письма, само письмо удаляется. Как с этим бороться?
2. Возможно ли идентифицировать письмо не по "теме" а по какому-то другому признаку? Возможно же 2 и более письма с одной и тойже темой.
3. При сохранении файла с исходным именем myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName, под DisplayName я так понимаю подразумевается исходные имя и расширение файла. И тогда получается неприйдется в событии кнопки задавать значение MyFilePath.
Направьте на путь истинный.
Спасибо!!! | |
|
| |
|
|
|
|
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 использоваться не будет | |
|
| |
|
|
|
| С первым вопросом разобрался.
Osmor правильно я думаю:
В событии кнопки пишем следующее:
MySubject = "Обновление данных" 'Установка заданной темы
Call GetMessage(MySubject, MyFilePath)
без задания MyFilePath.
А в теле фукции соответственно меняем myAttachments.Item(1).SaveAsFile MyFilePath на
на myAttachments.Item(1).SaveAsFile myAttachments.Item(1).DisplayName
Я все так и проделал но ничего невыходит.
Буду дальше ковырять.
Если незатруднит то буду рад совету.
Спасибо!!! | |
|
| |
|
|
|
| Если вы не собираетесь использовать 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)
|
| |
|
| |
|
|
|
| Osmor СПАСИБО БОЛЬШОЕ.
Все оказалось очень просто, все вложеия как и было сказано выше сохранились в папке Мои документы.
Еще раз спасибо!!!
Все вопросы исчерпаны полностью по этой теме.
Далее будемс ковырять все самостоятельно.
Главное было начать. | |
|
| |