L
Lee
As the subject states, I have been playing in the system trying to
figure out a method of using a report as the email body text.
So far, the closest I have come is the acFormatHTML. However, when
the report is more than one page, it autoformats the report to
multiple pages. I need one document.
Reason for doing this as text vs. attachment is in order to make the
message easier to view for the reader/receipent.
Any suggestions?
Here is the code:
Sub SendWithAtt(ByRef str_Message As str_EMAIL, Optional
str_ReportName As String, Optional dbl_OrderID As Double)
Dim CurrFile As String, olMailItem As Variant
Dim oApp As Object, m As Object
Dim SQL As String
Dim rst As Recordset, AppInTesting As Boolean
Set oApp = GetObject(, "Outlook.application")
If Err.Number <> 0 Then
Set oApp = CreateObject("Outlook.Application")
End If
On Error GoTo Err_SendWithAtt
If nz(dbl_OrderID, 0) > 0 Then
DoCmd.OpenReport str_ReportName, acViewPreview, "(orderid = "
& dbl_OrderID & ")"
Else
DoCmd.OpenReport str_ReportName, acViewPreview
End If
With oApp
Set m = .CreateItem(olMailItem)
With m
.To = str_Message.str_TO
.bcc = "my.email@address"
.Subject = str_Message.str_SUBJECT
.HTMLBody = ReportToHTML(Reports(str_ReportName))
.deferreddeliverytime = Now()
.deleteaftersubmit = True
.ReadReceiptRequested = False
.display
'.send
End With
End With
DoCmd.Close acReport, str_ReportName, acSaveNo
Set m = Nothing
Set oApp = Nothing
End Sub
Function ReportToHTML(Rpt As Report)
Dim obj_A As Object, obj_B As Object
Dim str_File As String
str_File = "C:\temp\report1.htm"
DoCmd.OutputTo acOutputReport, Rpt.Name, acFormatHTML, TempFile
Set obj_A = CreateObject("Scripting.FileSystemObject")
Set obj_B = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
ReportToHTML = obj_B.ReadAll
obj_B.Close
Set obj_B = Nothing
Set obj_A = Nothing
Kill str_File
End Function
figure out a method of using a report as the email body text.
So far, the closest I have come is the acFormatHTML. However, when
the report is more than one page, it autoformats the report to
multiple pages. I need one document.
Reason for doing this as text vs. attachment is in order to make the
message easier to view for the reader/receipent.
Any suggestions?
Here is the code:
Sub SendWithAtt(ByRef str_Message As str_EMAIL, Optional
str_ReportName As String, Optional dbl_OrderID As Double)
Dim CurrFile As String, olMailItem As Variant
Dim oApp As Object, m As Object
Dim SQL As String
Dim rst As Recordset, AppInTesting As Boolean
Set oApp = GetObject(, "Outlook.application")
If Err.Number <> 0 Then
Set oApp = CreateObject("Outlook.Application")
End If
On Error GoTo Err_SendWithAtt
If nz(dbl_OrderID, 0) > 0 Then
DoCmd.OpenReport str_ReportName, acViewPreview, "(orderid = "
& dbl_OrderID & ")"
Else
DoCmd.OpenReport str_ReportName, acViewPreview
End If
With oApp
Set m = .CreateItem(olMailItem)
With m
.To = str_Message.str_TO
.bcc = "my.email@address"
.Subject = str_Message.str_SUBJECT
.HTMLBody = ReportToHTML(Reports(str_ReportName))
.deferreddeliverytime = Now()
.deleteaftersubmit = True
.ReadReceiptRequested = False
.display
'.send
End With
End With
DoCmd.Close acReport, str_ReportName, acSaveNo
Set m = Nothing
Set oApp = Nothing
End Sub
Function ReportToHTML(Rpt As Report)
Dim obj_A As Object, obj_B As Object
Dim str_File As String
str_File = "C:\temp\report1.htm"
DoCmd.OutputTo acOutputReport, Rpt.Name, acFormatHTML, TempFile
Set obj_A = CreateObject("Scripting.FileSystemObject")
Set obj_B = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
ReportToHTML = obj_B.ReadAll
obj_B.Close
Set obj_B = Nothing
Set obj_A = Nothing
Kill str_File
End Function