Я запускаю MS Access 2010. Используя VBA, я пытаюсь вытащить вложения из MS Exchange 2013 и вставить их в таблицу Access «TBL_APPT_ATTACHMENT».Сохранить вложение Outlook в MS Access с помощью VBA
В таблице «TBL_APPT_ATTACHMENT» выглядит следующим образом: Attachment_title Memo Attachment_filename Memo Attachment_blob OLE Object
Все кажется работать правильно, за исключением я не могу понять, как сохранить фактический файл в ATTACHMENT_BLOB колонке. Вот моя функция VBA, которую я вызываю (см. Вопросительные знаки ниже).
Private Function createRecord(fItem As Outlook.AppointmentItem)
Set rsAtt = CurrentDb.OpenRecordset("TBL_APPT_ATTACHMENT")
rsAtt.OpenRecordset
For Each Attachment In fItem.Attachments
Call MsgBox("FileName: " & Attachment.FileName, vbOKOnly, "Error")
Call MsgBox("DisplayName: " & Attachment.DisplayName, vbOKOnly, "Error")
Call MsgBox("Index: " & Attachment.Index, vbOKOnly, "Error")
rsAtt.AddNew
rsAtt!APPT_ITEM_ID = aID
rsAtt!APPT_FIELD_id = rsOl!ID
rsAtt!ATTACHMENT_TITLE = Attachment.DisplayName
rsAtt!ATTACHMENT_FILENAME = Attachment.FileName
rsAttID = rsAtt!ID
rsAtt.Update
'Save file to harddrive.
filePath = "c:\temp\" + Attachment.FileName
Attachment.SaveAsFile (filePath)
Set rsParent = CurrentDb.OpenRecordset("SELECT ID, ATTACHMENT_BLOB FROM TBL_APPT_ATTACHMENT WHERE ID = " & rsAttID)
rsParent.OpenRecordset
Do While Not rsParent.EOF
rsParent.Edit
'Load file into Database.
'??? This next statement gives me a "Type Mismatch" error. Why?????
Set rsChild = rsParent.Fields("ATTACHMENT_BLOB").Value
rsChild.AddNew
rsChild.Fields("FileData").LoadFromFile (filePath)
rsChild.Update
rsParent.Update
rsParent.MoveNext
Loop
Next
End Function
Спасибо!
Решение Hyperlink для меня не является вариантом. Как только данные/документы загружаются из MS Exchange в базу данных MS Access, база данных будет размещена за брандмауэром. Я не всегда могу гарантировать, что гиперссылка будет действительна. Мне нужен фактический документ, загруженный в базу данных. – kjcook
Мой пример проверяется очень близко к коду в вашем OP. Я думаю, что ваша разница, возможно, является отсутствующей декларацией 'rsChild'. В отсутствие оператора 'Dim' переменная является« Variant ». Попробуйте добавить 'Dim rsChild как DAO.RecordSet', чтобы узнать, помогает ли это. – PeterT
Спасибо @PeterT. Если я добавлю инструкцию: «Dim rsChild As DAO.Recordset», я получаю ошибку компиляции: «Метод или элемент данных не найден» для строки «rschild.Fields» («FileData»). LoadFromFile (filePath) »с« LoadFromFile » 'выделяется. Если я удалил оператор: «Dim rsChild As DAO.Recordset», я получаю ошибку времени выполнения: «Тип несоответствия» в строке «Установить rsChild = rsParent.Fields (« ATTACHMENT_BLOB »). Значение« – kjcook