PDA

View Full Version : Solved: Open attachment in Outlook MailItem with VBA



Lammutaja
01-11-2006, 06:15 AM
Hello!
Can somebody help me:

I have active MailItem object and Attachments collection within it.
I made loop:

Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments
Dim myAttachment As Outlook.Attachment

For Each myAttachment In myAttachments

'Opens some userform with several myAttachment parameters

'How can user open active attachment directly within form without saving it to drive with VBA?

Next

Killian
01-11-2006, 07:33 AM
Well it's not possible to open a file without saving somewhere first. When you "open" an attachment directly from an email, Outlook will save the file to a temp directory first and open it from there.
It's easy enough for you to do the same - I would recommend using the user's temp folder. You can get this path with Environ("TEMP")

Then you'll need to open it. If you don't know which type of files you're dealing with, then you'll need to attempt to get the path of the executable that's associated with it in windows for each one.
This can be done with the winAPI function "FindExecutable"

All together, it goes something like this:'general declarations
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As Long

'in a procedure...
Dim strTempFilePath As String
Dim strExePath As String

For Each myAttachment In myAttachments
strTempFilePath = Environ("TEMP") & "\" & strTempFilePath & myAttachment.FileName
myAttachment.SaveAsFile strTempFilePath
strExePath = GetExePath(strTempFilePath)
If strExePath <> "" Then
Shell strExePath & " " & strTempFilePath, vbMaximizedFocus
Else
MsgBox "No file association found!"
End If
NextIf you want to be diligent, you'll then go and delete all those files you saved. Difficult, since the user may have them open when you decide to do it. Perhaps you should do what everyone else seems to (including M$) and forget about it - at some stage the user's temp folder will get cleaned out... maybe...

Lammutaja
01-11-2006, 07:37 AM
Thank You very much!

This was very helpful!