首页 > 解决方案 > 基于 Outlook 模板,从 Word 菜单创建电子邮件

问题描述

这是菜单上其他 Word 模板的代码。

Private Sub "button name_Click()
    Unload ####Menu
End Sub

这是我见过的从 Word 创建 Outlook 项目的代码。

Sub CreateFromTemplate() 
    Dim MyItem As Outlook.MailItem 
     
    Set MyItem = Application.CreateItemFromTemplate("C:\statusrep.oft") 
    MyItem.Display 
End Sub 
     
Sub CreateTemplate() 
    Dim MyItem As Outlook.MailItem 
     
    Set MyItem = Application.CreateItem(olMailItem) 
    MyItem.Subject = "Status Report" 
    MyItem.To = "Dan Wilson" 
    MyItem.Display 
    MyItem.SaveAs "C:\statusrep.oft", OlSaveAsType.olTemplate 
End Sub

我如何结合这些?

标签: vbaoutlookms-word

解决方案


看来您只需要从 Word VBA 自动化 Outlook。要启动 Outlook 自动化会话,您可以使用早期绑定或后期绑定。后期绑定使用 Visual BasicGetObject函数或CreateObject初始化 Outlook 的函数。例如,以下代码将对象变量设置为 Outlook 应用程序对象,该对象是 Outlook 对象模型中的最高级别对象。所有自动化代码必须首先定义一个 OutlookApplication对象才能访问任何其他 Outlook 对象。

Dim objOL as Object 
Set objOL = CreateObject("Outlook.Application")

要使用早期绑定,首先需要设置对 Outlook 对象库的引用。使用ReferenceVisual Basic for Applications (VBA) 工具菜单上的命令设置对 Microsoft Outlook xx.x 对象库的引用,其中 xx.x 表示您正在使用的 Outlook 版本。然后,您可以使用以下语法启动 Outlook 会话。

Dim objOL as Outlook.Application 
Set objOL = New Outlook.Application

大多数编程解决方案与存储在 Outlook 中的数据交互。Outlook 将其所有信息作为项目存储在文件夹中。文件夹包含在一个或多个存储中。将对象变量设置为 Outlook 应用程序对象后,通常会设置一个NameSpace对象来引用 MAPI,如下例所示。

Set objOL = New Outlook.Application 
Set objNS = objOL.GetNameSpace("MAPI") 
Set objFolder = objNS.GetDefaultFolder(olFolderContacts)

一旦您设置了一个对象变量来引用包含您希望使用的项目的文件夹,您就可以使用适当的代码来完成您的任务,如以下示例所示。

Sub CreateNewOutlookMail() 
    Dim objOLApp As Outlook.Application 
    Dim NewMail As Outlook.MailItem 
    ' Set the Application object 
    Set objOLApp = New Outlook.Application 
    ' You can only use CreateItem for default items 
    Set NewMail = objOLApp.CreateItem(olMailItem) 
    ' Display the new mail form so the user can fill it out 
    NewMail.Display 
End Sub

有关详细信息,请参阅从 Visual Basic 应用程序自动化 Outlook


推荐阅读