Public Function OpenFirstAttachmentAsTempFile(ByRef rstCurrent As DAO.Recordset, ByVal strFieldName As String) As String Dim rstChild As DAO.Recordset2 Dim fldAttach As DAO.Field2 Dim strFilePath As String Dim strTempDir As String strTempDir = Environ("Temp") ' Get the Temp directory from the environment variable. If Right(strTempDir, 1) <> "\" Then strTempDir = strTempDir & "\" ' Make sure the path always ends with a backslash. Set rstChild = rstCurrent.Fields(strFieldName).Value ' the .Value for a complex field returns the underlying recordset. strFilePath = strTempDir & rstChild.Fields("FileName").Value ' Append the name of the first (and only) attached file to temp dir. If Dir(strFilePath) <> "" Then ' the file already exists--delete it first. VBA.SetAttr strFilePath, vbNormal ' remove any file attributes (e.g. read-only) that would block the kill command. VBA.Kill strFilePath ' delete the file. End If Set fldAttach = rstChild.Fields("FileData") ' The binary data of the file. fldAttach.SaveToFile strFilePath rstChild.Close ' cleanup VBA.Shell "Explorer.exe " & Chr(34) & strFilePath & Chr(34), vbNormalFocus ' Use Windows Explorer to launch the file.End Function 'OpenFirstAttachmentAsTempFile
Public Function TestOpenFirstAttachmentAsTempFile() Dim dbs As DAO.Database Dim rst As DAO.Recordset Const strTable = "Table1" Const strField = "Files" ' Attachment field in Table1 Set dbs = CurrentDb Set rst = dbs.OpenRecordset(strTable) 'rst.MoveNext ' Uncomment this line to go to the 2nd row in the Table. OpenFirstAttachmentAsTempFile rst, strField rst.CloseEnd Function
PingBack from http://msdnrss.thecoderblogs.com/2007/08/30/using-vba-code-to-open-a-file-stored-in-the-new-access-2007-attachment-field/
...and yet another way to interact with it in this post:
http://www.access-freak.com/blog.html#BlogEntryAugust200705
I WANT TO KNOW MORE ABOUT CONSTUCTING VBA
Emmanuel, for general VBA questions, check out our communitites here:
http://blogs.msdn.com/access/archive/2007/07/31/access-communities.aspx