【问题标题】:How to send e-mails from Access through Outlook using VBA code?如何使用 VBA 代码通过 Outlook 从 Access 发送电子邮件?
【发布时间】:2023-01-07 03:18:47
【问题描述】:

我主要是想了解它正在运行的代码:

Sub sendOutlookEmail()
 Dim oApp As Outlook.Application
 Dim oMail As MailItem

 Set oApp = CreateObject("Outlook.Application")

 Set oMail = oApp.CreateItem(olMailItem)
  oMail.Body = "Body of the email"
  oMail.Subject = "Test Subject"
  oMail.To = "Someone@somewhere.com"
  oMail.Send

 Set oMail = Nothing
 Set oApp = Nothing

End Sub

我了解到通过早期绑定创建对象是最佳实践,如

Dim oApp as New Outlook.Application

而不是通过后期绑定,如

Dim oApp as Outlook.Application
Set oApp = CreateObject("Outlook.application")

所以我试图减少代码。

1. oApp 和oMail 都是对象吗?

或者是o邮件的属性或方法oApp对象(也许是创建新对象的方法)?如果是这样的话:

自从oApp是一个对象 Outlook.Application 和o邮件是一个对象,例如oApp.CreateItem(olMailItem) 我试图立即定义o邮件像这样通过早期绑定对象:

Dim oMail as New Outlook.Application.CreateItem(olMailItem)

但这给了我一个语法错误。 以及以下内容:

Dim oMail as New Outlook.Application.olMailItem

给我一个类型不匹配错误。 所以:

2. 有没有直接创建 oMail 的方法?

或者我必须先创建oApp对象首先无论如何,为了能够创建o邮件项目(即依赖于第一个的另一个对象)?

3. 有什么方法可以在一行中通过提前绑定来定义 oMail 对象吗?

我是编程新手,我希望我已经正确地解释了自己并且我的问题有某种意义呵呵。

祝你今天过得愉快!

【问题讨论】:

    标签: vba ms-access outlook-addin ms-access-2016 vba7


    【解决方案1】:
    1. 是的,它们都是对象。
    2. 不,只有Outlook.Application对象是可创建的。所有其他对象(MAPIFolderMailItemRecipient 等)。从对其他 Outlook 对象的调用中检索(例如,Application.CreateItem
    3. 毫无疑问,早期绑定与后期绑定的区别为零。早期绑定会给您带来智能感知和编译时错误。它也可以稍微快一点(不是您会在 VBA 中注意到的那样)。在功能方面,两者是相同的。

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2011-09-28
      • 2020-05-16
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      相关资源
      最近更新 更多