2

我有一个用于 Outlook 的宏,它部分地编辑电子邮件或日历项目的内容,这需要添加“Microsoft Word 14.0 对象库”参考。我知道如何在 Excel 中执行此操作ActiveWorkbook.VBProject.References.AddFromGuid(),但在 Outlook 中找不到有关执行此操作的任何信息。

是否可以?

每个 Remou 的示例代码:

Sub CreateNotesEmailFromAppointment()
  Dim oMeeting As AppointmentItem
  Dim oEmailTemplate As Outlook.MailItem
  Dim oEmailWordDoc As Word.Document

  If Application.ActiveInspector.CurrentItem.Class = olAppointment Then
    Set oMeeting = Application.ActiveInspector.CurrentItem
    Set oEmailTemplate = Application.CreateItemFromTemplate(PathToTemplateFile)
    oEmailTemplate.Display
    Set oEmailWordDoc = Application.ActiveInspector.WordEditor

    With oEmailWordDoc.Content.Find
        .Text = "<Date>"
        .Replacement.Text = Month(oMeeting.Start) & "/" & Day(oMeeting.Start)
        .Execute Replace:=wdReplaceAll
    End With
    'More editing and formatting of oEmailWordDoc follows'
  End If
End Sub
4

2 回答 2

2

考虑后期绑定:

Dim wd As Object

Set wd = CreateObject("Word.Application")
wd.Visible = True
wd.Documents.Open "C:\Docs\Temp.doc"

如果 Word 的实例可能正在运行:

On Error Resume Next
Set wd = GetObject(,"Word.Application")

If Err.Number <> 0 Then
   Set wd = CreateObject("Word.Application")
End If

wd.Visible = True

这是 2002 年的,但比最近的参考更好:http: //support.microsoft.com/kb/307216

不使用 word 而是使用模板的 HTMLBody 的不同方法怎么样:

  Dim oMeeting As AppointmentItem
  Dim oEmailTemplate As Outlook.MailItem

  If Application.ActiveInspector.CurrentItem.Class = olAppointment Then
    Set oMeeting = Application.ActiveInspector.CurrentItem
    Set oEmailTemplate = Application.CreateItemFromTemplate(PathToTemplateFile)
    oEmailTemplate.Display
    oEmailTemplate.HTMLBody = _
       Replace(oEmailTemplate.HTMLBody, "&lt;date&gt;", Month(oMeeting.Start) _
          & "/" & Day(oMeeting.Start))
  End If
于 2012-09-02T07:13:46.923 回答
0

根据我的发现,出于安全原因,Outlook VBA 不允许这样做。也许创建一个加载项将是一个解决方案。

于 2012-08-31T20:18:31.117 回答