首先,我是个新手,如果你不明白,或者我的术语不正确,请告诉我。
我正在尝试创建一个VBA宏,当在特定的单元格范围内输入日期时,它会自动在Outlook中创建约会,从作为全天事件输入的日期开始,并且从同一工作表中的其他单元格中提取约会标题和主题等数据。
例如。假设我将列C格式化为日期单元格,就像在C列中的任何单元格中输入日期时要运行的宏一样,该单元格创建的约会标题取自B2 & A1,并将约会提醒设置为两天前。
我附上了一个屏幕截图,我希望它能解释得更好一些。
也许解释一下我为什么要创建这样一个宏也会有帮助。我是一名城市规划师,在政府内部工作,当我收到一份规划申请进行评估时,我有28个日历日要求申请人提供进一步的资料。因此,我想创建一个宏,它将自动在Outlook中为该日期创建一个约会,以提醒自己。我确实有其他宏,我喜欢创建类似的,但婴儿步骤哈哈。
我自己也尝试过,基本上找到了两个不同的教程。一个用于单元格数据更改,另一个用于使outlook创建约会。现在既然我是个新手,我当然不能让它工作。但这是我试图将两者结合起来的尝试
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如果你想要任何进一步的信息,我很乐意提供。

发布于 2022-08-09 08:41:54
您不能在另一个函数中声明一个函数。因此,将CreateAppointment子程序移出Excel的事件处理程序,并分别声明它:
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的事件处理程序中传播该参数:
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实例来设置新约会项的属性。
https://stackoverflow.com/questions/73273009
复制相似问题