DoCmd.SendObject 方法 (Access)

在 Visual Basic 中,SendObject 方法执行 SendObject 操作。

语法

表达式SendObject (ObjectTypeObjectNameOutputFormatToCc密件抄送主题MessageTextEditMessageTemplateFile)

expression:表示 DoCmd 对象的变量。

参数

名称 必需/可选 数据类型 说明
ObjectType 可选 AcSendObjectType AcSendObjectType 常量,该常量指定要发送的对象的类型。
ObjectName 可选 Variant 所选类型的 ObjectType参数的对象的有效名称的字符串表达式。 若要在邮件中添加活动对象,请使用 ObjectType 参数指定对象的类型,并将此参数留空。 如果将 ObjectTypeObjectName 参数同时留空(ObjectType 参数被认定为采用默认常量 acSendNoObject),那么 Microsoft Access 会向电子邮件应用发送不含数据库对象的邮件。

如果在库数据库中运行包含 SendObject 方法的 Visual Basic 代码,则 Access 首先在库数据库中查找具有此名称的对象,然后在当前数据库中查找。
OutputFormat 可选 Variant 指定发送对象所用格式的常量。 可能的值包括 acFormatHTMLacFormatRTFacFormatSNPacFormatTXTacFormatXLSacFormatXLSBacFormatXLSXacFormatXPSacFormatPDF
"自" 可选 Variant 字符串表达式,列出要在邮件的“收件人”行中添加的收件人姓名。 使用分号 (;) ,或在 Windows 控制面板“区域设置属性”对话框的“编号”选项卡上设置列表分隔符,分隔在此参数和抄送密件抄送参数中指定的收件人姓名。 如果邮件应用无法识别收件人姓名,则不会发送邮件,并显示错误消息。 如果将此参数留空,Microsoft Access 会提示输入收件人姓名。
Cc 可选 Variant 字符串表达式,列出名称要放在邮件“抄送”行中的收件人。 如果将此参数留空,邮件中的“抄送”行为空。
Bcc 可选 Variant 字符串表达式,列出名称要放在邮件“密件抄送”行中的收件人。 如果将此参数留空,邮件中的“密件抄送”行为空。
Subject 可选 Variant 一个字符串表达式,其中包含要在邮件中的 “主题” 行上放置的文本。 如果将此参数留空,邮件中的“主题”行为空。
MessageText 可选 Variant 一个字符串表达式,其中包含要包含在邮件正文中的文本(在 对象之后)。 如果将该参数保留为空,则对象是邮件正文中包含的全部内容。
EditMessage 可选 Variant 使用 True (1) 在加载邮件后立即打开电子邮件应用程序,以便可以编辑邮件。 使用 False (0) 将不进行编辑就发送邮件。 如果将该参数保留为空,将采用默认值 (True)。
TemplateFile 可选 Variant 一个字符串表达式,它是要用作 HTML 文件模板的文件的完整名称(包括路径)。

备注

使用 SendObject 操作在电子邮件中包含指定的 Microsoft Access 数据表、表单、报表或模块,可在其中查看和转发。 在 Microsoft Outlook、Microsoft Exchange 或其他使用邮件应用程序编程接口 (MAPI) 的电子邮件应用程序中,可以在邮件中包括格式为 Microsoft Excel 2000 (*.xls)、MS-DOS 文本 (*.txt)、RTF (*.rtf) 或 HTML (*.html) 的对象。

使用 SendObject 操作将数据库对象添加到邮件时,下列规则适用:

  • 可以发送表、查询和窗体数据表。 在所包括的对象中,数据表中的所有字段的外观都将与它们在 Access 中的相同,只有包含 OLE 对象的字段例外。 这些字段的列将包括在对象中,但字段是空的。

  • 对于绑定到“ 是/否 ”字段 (切换按钮、选项按钮或复选框) 的控件,输出文件显示值 1 (“是”) 或 0 (No) 。

  • 对于绑定到“超链接”字段的文本框,输出文件将显示所有输出格式的超链接,但 MS-DOS 文本除外(在这种情况下,超链接只显示为常规文本)。

  • 如果发送表单视图中的表单,添加的对象始终包含表单的数据表视图。

  • 如果发送报表,对象中只包含文本框(.xls 文件)或文本框和标签(.rtf、.txt 和 .html 文件)控件。 其他所有控件都会被忽略。 页眉和页脚信息也不会包括在其中。 唯一的例外是,当发送 Excel 格式的报表时,组页脚中的文本框将被包括在对象中,但该文本框包含的表达式中要有 Sum 函数。 页眉或页脚中的其他控件(以及除了 "Sum" 以外的其他聚合函数)将不会包括在对象中。

  • 子报表将包括在对象中。 当输出到 .asp 时将包括子窗体,但只有在作为窗体(而不是数据表)输出时才包括。

  • 发送 HTML 格式的数据表、窗体或数据访问页时,将创建一个 .html 文件。 发送 HTML 格式的报表时,将为报表中的每一页创建一个 .html 文件。

模块只能以 MS-DOS 文本格式发送,因此,如果为 ObjectType 参数指定 acSendModule,还必须为 OutputFormat 参数指定 acFormatTXT

注意

只有在安装加载项之后,才可以通过 2007 Microsoft Office system 程序将其另存为 PDF 或 XPS 文件。 有关详细信息,请参阅 2007 Microsoft Office 加载项:Microsoft Save as PDF or XPS。

示例

下面的代码示例在 Microsoft Excel 格式的邮件中包含 Employees 表,并在邮件中指定 收件人抄送主题 行。 邮件会立即发送,而不进行编辑。

DoCmd.SendObject acSendTable, "Employees", acFormatXLS, _ 
    "Nancy Davolio; Andrew Fuller", "Joan Weber", , _ 
    "Current Spreadsheet of Employees", , False

下面的示例展示了如何使用 Microsoft Outlook 创建电子邮件,并将它显示给用户。

Public Function CreateEmailWithOutlook( _
    MessageTo As String, _
    Subject As String, _
    MessageBody As String)

    ' Define app variable and get Outlook using the "New" keyword
    Dim olApp As New Outlook.Application
    Dim olEmail As Outlook.MailItem  ' An Outlook Mail item
 
    ' Create a new email object
    Set olEmail = olApp.CreateItem(olMailItem)

    ' Add the To/Subject/Body to the message and display the message
    With olEmail
        .To = MessageTo
        .Subject = Subject
        .Body = MessageBody
        .Display    ' To show the email message to the user
    End With

End Function

下面的示例演示如何使用 Microsoft Outlook 创建一封电子邮件并进行发送,无需在发送中向用户显示该电子邮件。

Public Function SendEmailWithOutlook( _
    MessageTo As String, _
    Subject As String, _
    MessageBody As String)

    ' Define app variable and get Outlook using the "New" keyword
    Dim olApp As New Outlook.Application
    Dim olEmail As Outlook.MailItem  ' An Outlook Mail item
 
    ' Create a new email object
    Set olEmail = olApp.CreateItem(olMailItem)

    ' Add the To/Subject/Body to the message and display the message
    With olEmail
        .To = MessageTo
        .Subject = Subject
        .Body = MessageBody
        .Send       ' Send the message immediately
    End With

End Function

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。