简体   繁体   English

Excel VBA-通过Lync / Communicator API发送组消息

[英]Excel VBA - Sending Group Message via Lync / Communicator API

I am trying to send a group message to more than one user over Lync/Microsoft Communicator from Excel using VBA. 我正在尝试使用VBA通过Excel从Lync / Microsoft Communicator向多个用户发送组消息。

The below code works for a single e-mail address/user but if a cell range of two e-mail addresses is provided, it gives "Method 'CreateGroup' of Object IMessengerAdvanced' failed" error. 下面的代码适用于单个电子邮件地址/用户,但是如果提供了两个电子邮件地址的单元格范围,则会出现“对象IMessengerAdvanced'失败的方法'CreateGroup'”错误。 Any advice would be greatly appreciated. 任何建议将不胜感激。

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

The InstantMessage(Object) method supposedly works for >1 user according to this previous topic below, but in practice it doesn't seem to... 根据下面的上一个主题,InstantMessage(Object)方法应该适用于> 1个用户,但实际上它似乎并没有...

Lync notification of offline people using VBA 使用VBA的线下人员的Lync通知

The interface expects an Array of email addresses when sending to a group. 发送到群组时,界面需要一个电子邮件地址数组

instead of: 代替:

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

test this: 测试一下:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM