2

電子メールまたはカレンダーアイテムのコンテンツを部分的に編集するOutlookのマクロがあります。これには、「MicrosoftWord14.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

単語ではなく、テンプレートの 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 に答える