2016-03-01 59 views
0

我正試圖通過VBA將羣組消息發送給超過Lync/Microsoft Communicator的用戶。Excel VBA - 通過Lync/Communicator API發送羣組消息

下面的代碼適用於單個電子郵件地址/用戶,但是如果提供了兩個電子郵件地址的單元格範圍,則會給出對象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

+0

我thinnk你需要發送列表作爲一個數組....嘗試改變這一點:昏暗msgTo爲Variant這樣:暗淡msgTo()As Variant – montewhizdoh

+0

您可能還需要更改:msgTo =表格(「Sheet1」)。Range(「A1:A2」)。value to this:msgTo = Sheets(「Sheet1」)。Range(「A1: A2「) – montewhizdoh

+0

感謝這兩個建議,不幸的是既沒有工作,因爲我得到相同的錯誤信息。 – FinDev

回答

0

接口預期發送到組時發送電子郵件地址的陣列。而不是

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 
+0

工作,再次感謝 – FinDev

+0

我改編了一些從這裏工作:http://superuser.com/questions/808798/excel-vba-adding-an-element-to-the-end-of-an-array – montewhizdoh

+0

謝謝你很多,這很好。我只需要進行一次小的更改「msgr = Messenger.InstantMessage(msgTo)」到「設置msgr = Messenger.InstantMessage(msgTo)」,否則會導致錯誤。 – FinDev