首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从单元格数据创建outlook约会

从单元格数据创建outlook约会
EN

Stack Overflow用户
提问于 2022-08-08 04:42:48
回答 1查看 76关注 0票数 0

首先,我是个新手,如果你不明白,或者我的术语不正确,请告诉我。

我正在尝试创建一个VBA宏,当在特定的单元格范围内输入日期时,它会自动在Outlook中创建约会,从作为全天事件输入的日期开始,并且从同一工作表中的其他单元格中提取约会标题和主题等数据。

例如。假设我将列C格式化为日期单元格,就像在C列中的任何单元格中输入日期时要运行的宏一样,该单元格创建的约会标题取自B2 & A1,并将约会提醒设置为两天前。

我附上了一个屏幕截图,我希望它能解释得更好一些。

也许解释一下我为什么要创建这样一个宏也会有帮助。我是一名城市规划师,在政府内部工作,当我收到一份规划申请进行评估时,我有28个日历日要求申请人提供进一步的资料。因此,我想创建一个宏,它将自动在Outlook中为该日期创建一个约会,以提醒自己。我确实有其他宏,我喜欢创建类似的,但婴儿步骤哈哈。

我自己也尝试过,基本上找到了两个不同的教程。一个用于单元格数据更改,另一个用于使outlook创建约会。现在既然我是个新手,我当然不能让它工作。但这是我试图将两者结合起来的尝试

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C5")) Is Nothing Then

Sub CreateAppointment()

Dim ol As Outlook.Application
Dim olAp As Outlook.AppointmentItem

Set ol = New Outlook.Application
Set olAp = ol.CreateItem(olAppointmentItem)

With olAp
    .Subject = "Board Meeting - 2020 annual results"
    .Location = "Meeting Room 007"
    .Start = "06/01/2020 05:30 PM"
    .End = "06/01/2020 06:30 PM"
    .RequiredAttendees = "a@b.com, c@d.com"
    .OptionalAttendees = "d@e.com"
    .Body = "Important decisions, Annual profits/losses"
    .Send
End With
    
End Sub

如果你想要任何进一步的信息,我很乐意提供。

EN

回答 1

Stack Overflow用户

发布于 2022-08-09 08:41:54

您不能在另一个函数中声明一个函数。因此,将CreateAppointment子程序移出Excel的事件处理程序,并分别声明它:

代码语言:javascript
复制
Sub CreateAppointment(ByVal Target As Range)

  Dim ol As Outlook.Application
  Dim olAp As Outlook.AppointmentItem

  Set ol = New Outlook.Application
  Set olAp = ol.CreateItem(olAppointmentItem)

  With olAp
    .Subject = "Board Meeting - 2020 annual results"
    .Location = "Meeting Room 007"
    .Start = "06/01/2020 05:30 PM"
    .End = "06/01/2020 06:30 PM"
    .RequiredAttendees = "a@b.com, c@d.com"
    .OptionalAttendees = "d@e.com"
    .Body = "Important decisions, Annual profits/losses"
    .Send
  End With
End Sub

不要忘记在VBA编辑器中添加对Outlook的COM引用,这样您就可以访问对象模型(类型库)。此外,我还添加了一个参数,您可以从Excel的事件处理程序中传播该参数:

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("C1:C5")) Is Nothing Then
   CreateAppointment(Target)
  End If
End Sub

最后一点,您需要根据传递给sub的Range实例来设置新约会项的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73273009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档