【问题标题】:Excel VBA - Sending Group Message via Lync / Communicator APIExcel VBA - 通过 Lync / Communicator API 发送群组消息
【发布时间】:2016-06-13 21:11:24
【问题描述】:

我正在尝试使用 VBA 从 Excel 中通过 Lync/Microsoft Communicator 向多个用户发送群组消息。

以下代码适用于单个电子邮件地址/用户,但如果提供了两个电子邮件地址的单元格范围,则会出现“Object IMessengerAdvanced 的方法‘CreateGroup’失败”错误。任何建议将不胜感激。

Sub sendIM()
 Dim msgr As CommunicatorAPI.IMessengerConversationWndAdvanced
 Dim msgTo As Variant
 msgTo = Sheets("Sheet1").Range("A1:A2").Value
 msgr = Messenger.InstantMessage(msgTo)
 msgr.SendText ("Test")
End Sub

根据下面的上一个主题,InstantMessage(Object) 方法应该适用于 >1 个用户,但实际上它似乎并不...

Lync notification of offline people using VBA

【问题讨论】:

  • 我认为您需要将列表作为数组发送....尝试将其更改为:Dim msgTo As Variant 为:Dim msgTo() As Variant
  • 你可能还需要改变这个:msgTo = Sheets("Sheet1").Range("A1:A2").Value 到这个:msgTo = Sheets("Sheet1").Range(" A1:A2")
  • 感谢您的两个建议,不幸的是,两者都没有奏效,因为我收到了相同的错误消息。
  • 试试这个?在此处放置 2 个有效的电子邮件地址....而不是 msgTo = Sheets("Sheet1").Range("A1:A2").Value 试试这个: msgTo = Array("email1@dot.com", "email2 @dot.com")
  • 第三条建议效果很好,感谢您的帮助!

标签: vba excel lync office-communicator


【解决方案1】:

当发送到群组时,界面需要一个数组的电子邮件地址。

代替:

Sub sendIM()
 Dim msgr As CommunicatorAPI.IMessengerConversationWndAdvanced
 Dim msgTo As Variant
 msgTo = Sheets("Sheet1").Range("A1:A2").Value
 msgr = Messenger.InstantMessage(msgTo)
 msgr.SendText ("Test")
End Sub

测试一下:

Sub sendIM()
 Dim msgr As CommunicatorAPI.IMessengerConversationWndAdvanced

 Dim msgTo() As Variant
 ReDim msgTo(0 To 0)                       'Allocate first element
 For Each cell In Sheets("Sheet1").Range("A1:A2")'put your range here
     msgTo(UBound(msgTo)) = cell.Value2          'Assign the array element
     ReDim Preserve msgTo(UBound(msgTo) + 1) 'Allocate next element
 Next
 ReDim Preserve msgTo(LBound(msgTo) To UBound(msgTo) - 1)  'Deallocate the last, unused element

 'sometimes you need to use Set, sometimes you dont, depending on environment you have, or maybe OPTION EXPLICIT
 Set msgr = Messenger.InstantMessage(msgTo)
 'msgr = Messenger.InstantMessage(msgTo)
 msgr.SendText ("Test")
End Sub

【讨论】:

  • 我从这里改编了一些作品:superuser.com/questions/808798/…
  • 非常感谢,效果很好。我只需要将“msgr = Messenger.InstantMessage(msgTo)”更改为“Set msgr = Messenger.InstantMessage(msgTo)”,否则会导致错误。
  • 是的,您使用的 VBA 版本有时会需要 Set,有时会禁止 Set。我认为这与版本或其他一些环境设置有关。或者如果它在一个 mod 或 cls 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 2014-12-18
  • 2014-04-22
  • 2015-06-01
  • 1970-01-01
  • 2015-07-07
  • 2012-08-15
相关资源
最近更新 更多