2010-07-29 44 views

回答

0

如果你使用的是Outlook,你可以写一个报告或查询到磁盘并使用HTMLBody或RTFBody,这是一段时间,因为我测试了这个,我希望它仍然有用。

Const ForReading = 1, ForWriting = 2, ForAppending = 3 

Dim fs, f 
Dim RTFBody 
Dim MyApp As New Outlook.Application 
Dim MyItem As Outlook.MailItem 

DoCmd.OutputTo acOutputReport, "Report1", acFormatRTF, "Report1.rtf" 
''DoCmd.OutputTo acOutputQuery, "Query1", acFormatHTML, "Query1.htm" 

Set fs = CreateObject("Scripting.FileSystemObject") 

Set f = fs.OpenTextFile("Report1.rtf", ForReading) 
''Set f = fs.OpenTextFile("Query1.htm", ForReading) 
RTFBody = f.ReadAll 
''Debug.Print RTFBody 
f.Close 

Set MyItem = MyApp.CreateItem(olMailItem) 
With MyItem 
    .To = "[email protected]" 
    .Subject = "Subject" 
    .RTFBody = RTFBody 
    ''.HTMLBody = RTFBody 
End With 
MyItem.Display 
2

这就是我用SendObject做的,它将报告作为RTF附加在电子邮件的正文中。

Private Sub btnEmail_Click() 

    Dim IDnumber As Integer 
    Dim Message As String 
    Dim EmailTo As String 
    Dim FileName As String 

    'Get the current record's ID Number 
    IDnumber = Me![ID] 
    'set file name and path 
    FileName = Environ("USERPROFILE") & "\My Documents\temp.html" 
    'set email address 
    EmailTo = "[email protected]" 

    'get form to open a new record 
    DoCmd.GoToRecord , , acNewRec 

    'generate report for the current record entered 
    DoCmd.OpenReport "ReportName", acPreview, , "[ID]=" & IDnumber, acHidden 
    'create HTML file for the report 
    DoCmd.OutputTo acOutputReport, "ReportName", acFormatHTML, FileName 

    'open file 
    Open FileName For Input As #1 
    'read the file into a string 
    Message = Input(LOF(1) - 1, 1) 
    'close the file 
    Close 1 

    'generate email 
    DoCmd.SendObject acSendReport, "ReportName", acFormatRTF, EmailTo, , , "Subject", Message 
    'close the report 
    DoCmd.Close acReport, "ReportName" 

    'suppress errors if file is not there 
    On Error Resume Next 
    'remove file 
    Kill FileName 

End Sub 
相关问题