I dont even know where to start on this one. I found this on the net (everything in italics are the authors comments):
Expand|Select|Wrap|Line Numbers
- 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
Then I wrote this function just to test it in a database that has a Table1 with an Attachment field named "Files" in which I had already placed a file:
Expand|Select|Wrap|Line Numbers
- 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.Close
- End Function
But i would like to take it one step farther and print it with the default printer. Does anybody think that is possible, or even worth doing. Basically i have documents attached (PDF documents), and want them to print out as the last 2 pages of a report (actually printed to a pdf document, if that helps at all).
Again, as i always say "Any help is greatly appreciated".