【问题标题】:Create and email outlook appointment from MS Project w/VBA从带有 VBA 的 MS Project 创建并通过电子邮件发送 Outlook 约会
【发布时间】:2013-12-28 04:30:14
【问题描述】:

VBA 新手。

我使用 MS Project 作为任务调度程序,并在 MS Project 中构建了自定义视图,以便每个资源都可以查看其特定任务。我正在使用下面的代码在每个资源的 Outlook 日历中创建约会,方法是他们在 MS Project 中选择特定的任务视图并运行下面的宏。这工作正常,并根据需要填充个人日记中的约会。

但是我正在尝试扩展此代码的功能,以允许“管理员”为 MS Project 中的每个资源选择特定的任务视图,然后运行宏来生成要发送给每个人的约会以创建一个在他们的日历上约会。

我遇到的问题是,虽然 Outlook 约会已正确创建并在约会的参加者选项卡中包含(已解决的)资源名称,但约会表单本身缺少发送按钮。如果我随后手动将任何其他与会者添加到约会中,它会解析并出现“发送”按钮并且可以正确发送。

Msgbox 仅显示 MS Project 中分配的资源的名称。

我在设置 myDelegate 时尝试了多种变化,但没有成功,对此的任何想法将不胜感激。


Option Explicit
Public myOLApp As Object
Sub Export_Selection_to_OL_Appointments_AutoEmail()
    Dim myTask As Task
    Dim myDelegate As Object
    Dim myItem As Object
    Dim Msg As Object

    On Error Resume Next
    Set myOLApp = CreateObject("Outlook.Application")
     For Each myTask In ActiveSelection.Tasks
     Set myItem = myOLApp.CreateItem(1)
     myItem.Assign
      With myItem
        Set myDelegate = myItem.Recipients.Add(myTask.Resources(1).EMailAddress)
        myDelegate.Resolve
        Msg = MsgBox("myDelegate is " & myDelegate, vbOKOnly)
        .Start = myTask.Start
        .End = myTask.Finish
        .Subject = myTask.Text1 & ": " & myTask.Text2
        .Categories = myTask.Project
        .Body = myTask.Notes
        .Display
        .Send
      End With
  Next myTask
End Sub

【问题讨论】:

    标签: vba outlook ms-project


    【解决方案1】:

    我不确定它是否能完全解决问题,但这看起来语法不正确:

    With myItem
        Set myDelegate = myItem.Recipients.Add(myTask.Resources(1).EMailAddress)
    End with 
    

    如果你使用With,那么你应该把它放在 with 块之外:

    Set myDelegate = myItem.Recipients.Add(myTask.Resources(1).EMailAddress)
    With myItem
    '...
    End with 
    

    或以这种方式访问​​属性:

    With myItem
    Set myDelegate = .Recipients.Add(myTask.Resources(1).EMailAddress)
    End with 
    

    也可以使用

    debug.print(ActiveSelection.Tasks & " ; " & myTask)
    

    检查对象不为空。

    还可以使用“本地”窗口检查对象的属性。
    myTask 应该显示一个属性列表,其中 Resources(1) 应该有自己的子属性,其中“emailAddress”。

    【讨论】:

    • 金,谢谢您的意见。修改后的“设置”工作正常,但“调试”失败,参数不是可选的(在任务上)。
    • Kim,我忘了感谢当地人和监视窗口,这些证明很有用,我将继续解决这个问题。如果 yiu 有任何进一步的想法,那将是最有帮助的。 Rgds 鲍勃
    • 那是个错误。 debug.print(myTask)但我不确定这是否可行。我会继续使用本地窗口进行调试,这是查看对象属性的最简单方法。
    猜你喜欢
    • 2016-05-11
    • 2020-05-30
    • 2021-05-11
    • 2018-05-24
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多