我是VBA的新手,有些代码有问题。
我需要创建一个宏,打开一个新的Outlook窗口,复制筛选后的单元格并将其粘贴到电子邮件正文上。你知道怎么做吗?
您似乎需要从Excel自动化Outlook。若要启动Outlook Automation会话,可以使用早期绑定或后期绑定。后期绑定使用Visual BasicGetObject
函数或CreateObject
函数来初始化Outlook。例如,以下代码将对象变量设置为Outlook应用程序对象,该对象是Outlook对象模型中的最高级别对象。所有Automation代码必须首先定义Outlook应用程序对象,才能访问任何其他Outlook对象。
Dim objOL as Object
Set objOL = CreateObject("Outlook.Application")
若要使用早期绑定,首先需要设置对Outlook对象库的引用。使用Visual Basic for Applications(VBA(Tools
菜单上的Reference
命令可以设置对Microsoft Outlook xx.x Object Library
的引用,其中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 CreateNewDefaultOutlookTask()
Dim objOLApp As Outlook.Application
Dim NewTask As Outlook.TaskItem
' Set the Application object
Set objOLApp = New Outlook.Application
' You can only use CreateItem for default items
Set NewTask = objOLApp.CreateItem(olTaskItem)
' Display the new task form so the user can fill it out
NewTask.Display
End Sub
Outlook对象模型提供了三种处理项目主体的主要方法:
- 身体
- HTMLBody
- Word编辑器。Inspector类的WordEditor属性返回表示消息正文的Word文档的实例
有关详细信息,请参阅第17章:使用项目主体。