comment active la ref en VBA Microsoft Office Communicator
4 réponses
Velosona
Bonjour,
je veux faire extraire l'information de mon messenger vers excel
voici le code que je trouve dans net mais il y de probleme sur CommunicatorAPI.IMessengerConversationWndAdvanced
Sub sendIM()
Dim msgr As CommunicatorAPI.IMessengerConversationWndAdvanced
Dim ToUser As String
Dim message As String
Application.ScreenUpdating = False
ToUser = "someone@somewhere.com"
message = "test vba communicator"
On Error Resume Next
Set msgr = Messenger.InstantMessage(ToUser)
'Send message to window
msgr.SendText (message)
msgr.Close
Application.ScreenUpdating = True
End Sub
Copie du code proposé de cette adresse, voire le fil du message... '------------------------------------------
and paste the following code in the module1 ———————————————————- Sub TimerApp()
dTime = Now + TimeValue(“00:05:00”) ‘ this code is to automate running of the status for every 5MIN u can change according to ur convinence, and point 2 after runnig once this code it will run all the time even if ur excel is closed (to stop running for nxt time commetn out the dtime line.:) With Application .OnTime dTime, “TimerApp” .ScreenUpdating = True .EnableEvents = True Sheet1.showContacts End With ‘Other Code to run at this point End Sub —————————————————— Paste the below in the sheet1 macro coding window ——————————————————– Sub showContacts() Dim p As CommunicatorAPI.Messenger Dim s As CommunicatorAPI.IMessengerContacts Dim t As CommunicatorAPI.IMessengerContact Dim o As CommunicatorAPI.IMessengerContact
Sheet1.Cells.ClearContents
Dim w As String Dim v As Long v = 1 w = “” Set p = CreateObject(“Communicator.UIAutomation”) p.AutoSignin Set s = p.MyContacts
Dim b As Workbook Dim sh As Worksheet Set b = ActiveWorkbook Set sh = b.Sheets(1) sh.Activate sh.Cells(1, 1).Select
For v = 1 To s.Count – 1 Set o = s.Item(v) additem_in_sheet v, o.FriendlyName, o.Status
‘sh.Cells(v, 1).Value = o.FriendlyName ‘sh.Cells(v, 2).Value = CStr(o.Status) Next v
update_sheet2
End Sub
Public Function GetStatus(I As Integer) As String Dim str As String Select Case I Case 1 str = “Offline” Case 2 str = “Online” Case 6 str = “Invisible” Case 10 str = “Busy” Case 14 str = “Be Right Back” Case 18 str = “Idle” Case 34 str = “Away” Case 50 str = “On the Phone” Case 66 str = “Out to Lunch” Case Else str = “Unknown” End Select
GetStatus = str End Function
Sub additem_in_sheet(irow As Long, name As String, stat As Integer)
Sheet1.Cells(irow, 1) = name Sheet1.Cells(irow, 2) = GetStatus(stat) Sheet1.Cells(irow, 3) = Time Sheet1.Cells(irow, 4) = Date Sheet1.Cells(irow, 5) = DatePart(“ww”, Date, vbMonday, vbFirstFourDays) Sheet1.Cells(irow, 6) = Month(Date) Sheet1.Cells(irow, 7) = Year(Date) Sheet1.Cells(irow, 8) = Day(Date) Sheet1.Cells(irow, 9) = Hour(Time) ‘Sheet1.Cells(irow, 10) = Minute(Time) End Sub
Sub update_sheet2()
Dim x As Long For x = 2 To 65536 If Sheet2.Cells(x, 9) = Empty Then empty_row = x – 1 Exit For End If Next x
Copie du code proposé de cette adresse, voire le fil du message...
'------------------------------------------
and paste the following code in the module1
———————————————————-
Sub TimerApp()
dTime = Now + TimeValue(“00:05:00”) ‘ this code is to automate running
of the status for every 5MIN u can change according to ur convinence,
and point 2 after runnig once this code it will run all the time even if
ur excel is closed (to stop running for nxt time commetn out the dtime
line.:)
With Application
.OnTime dTime, “TimerApp”
.ScreenUpdating = True
.EnableEvents = True
Sheet1.showContacts
End With
‘Other Code to run at this point
End Sub
——————————————————
Paste the below in the sheet1 macro coding window
——————————————————–
Sub showContacts()
Dim p As CommunicatorAPI.Messenger
Dim s As CommunicatorAPI.IMessengerContacts
Dim t As CommunicatorAPI.IMessengerContact
Dim o As CommunicatorAPI.IMessengerContact
Sheet1.Cells.ClearContents
Dim w As String
Dim v As Long
v = 1
w = “”
Set p = CreateObject(“Communicator.UIAutomation”)
p.AutoSignin
Set s = p.MyContacts
Dim b As Workbook
Dim sh As Worksheet
Set b = ActiveWorkbook
Set sh = b.Sheets(1)
sh.Activate
sh.Cells(1, 1).Select
For v = 1 To s.Count – 1
Set o = s.Item(v)
additem_in_sheet v, o.FriendlyName, o.Status
‘sh.Cells(v, 1).Value = o.FriendlyName
‘sh.Cells(v, 2).Value = CStr(o.Status)
Next v
update_sheet2
End Sub
Public Function GetStatus(I As Integer) As String
Dim str As String
Select Case I
Case 1
str = “Offline”
Case 2
str = “Online”
Case 6
str = “Invisible”
Case 10
str = “Busy”
Case 14
str = “Be Right Back”
Case 18
str = “Idle”
Case 34
str = “Away”
Case 50
str = “On the Phone”
Case 66
str = “Out to Lunch”
Case Else
str = “Unknown”
End Select
GetStatus = str
End Function
Sub additem_in_sheet(irow As Long, name As String, stat As Integer)
Sheet1.Cells(irow, 1) = name
Sheet1.Cells(irow, 2) = GetStatus(stat)
Sheet1.Cells(irow, 3) = Time
Sheet1.Cells(irow, 4) = Date
Sheet1.Cells(irow, 5) = DatePart(“ww”, Date, vbMonday, vbFirstFourDays)
Sheet1.Cells(irow, 6) = Month(Date)
Sheet1.Cells(irow, 7) = Year(Date)
Sheet1.Cells(irow, 8) = Day(Date)
Sheet1.Cells(irow, 9) = Hour(Time)
‘Sheet1.Cells(irow, 10) = Minute(Time)
End Sub
Sub update_sheet2()
Dim x As Long
For x = 2 To 65536
If Sheet2.Cells(x, 9) = Empty Then
empty_row = x – 1
Exit For
End If
Next x
Copie du code proposé de cette adresse, voire le fil du message... '------------------------------------------
and paste the following code in the module1 ———————————————————- Sub TimerApp()
dTime = Now + TimeValue(“00:05:00”) ‘ this code is to automate running of the status for every 5MIN u can change according to ur convinence, and point 2 after runnig once this code it will run all the time even if ur excel is closed (to stop running for nxt time commetn out the dtime line.:) With Application .OnTime dTime, “TimerApp” .ScreenUpdating = True .EnableEvents = True Sheet1.showContacts End With ‘Other Code to run at this point End Sub —————————————————— Paste the below in the sheet1 macro coding window ——————————————————– Sub showContacts() Dim p As CommunicatorAPI.Messenger Dim s As CommunicatorAPI.IMessengerContacts Dim t As CommunicatorAPI.IMessengerContact Dim o As CommunicatorAPI.IMessengerContact
Sheet1.Cells.ClearContents
Dim w As String Dim v As Long v = 1 w = “” Set p = CreateObject(“Communicator.UIAutomation”) p.AutoSignin Set s = p.MyContacts
Dim b As Workbook Dim sh As Worksheet Set b = ActiveWorkbook Set sh = b.Sheets(1) sh.Activate sh.Cells(1, 1).Select
For v = 1 To s.Count – 1 Set o = s.Item(v) additem_in_sheet v, o.FriendlyName, o.Status
‘sh.Cells(v, 1).Value = o.FriendlyName ‘sh.Cells(v, 2).Value = CStr(o.Status) Next v
update_sheet2
End Sub
Public Function GetStatus(I As Integer) As String Dim str As String Select Case I Case 1 str = “Offline” Case 2 str = “Online” Case 6 str = “Invisible” Case 10 str = “Busy” Case 14 str = “Be Right Back” Case 18 str = “Idle” Case 34 str = “Away” Case 50 str = “On the Phone” Case 66 str = “Out to Lunch” Case Else str = “Unknown” End Select
GetStatus = str End Function
Sub additem_in_sheet(irow As Long, name As String, stat As Integer)
Sheet1.Cells(irow, 1) = name Sheet1.Cells(irow, 2) = GetStatus(stat) Sheet1.Cells(irow, 3) = Time Sheet1.Cells(irow, 4) = Date Sheet1.Cells(irow, 5) = DatePart(“ww”, Date, vbMonday, vbFirstFourDays) Sheet1.Cells(irow, 6) = Month(Date) Sheet1.Cells(irow, 7) = Year(Date) Sheet1.Cells(irow, 8) = Day(Date) Sheet1.Cells(irow, 9) = Hour(Time) ‘Sheet1.Cells(irow, 10) = Minute(Time) End Sub
Sub update_sheet2()
Dim x As Long For x = 2 To 65536 If Sheet2.Cells(x, 9) = Empty Then empty_row = x – 1 Exit For End If Next x
Bonjour Vous n'êtes pas très bavard sur le problème rencontré.
Avez-vous installé Microsoft Office Communicator 2007 SDK et l'avez-vous référencé dans vbe ?
Bonjour Merci de votre conseil. Je déjà essai avec Microsft Lync2013 mais j'avais de problem sur adress de connection Alors je essai de cherche Microsoft Office Communicator Salutation Velosona
Le jeudi 07 Avril 2016 à 08:47 par Geo :
Bonjour
Vous n'êtes pas très bavard sur le problème
rencontré.
Avez-vous installé Microsoft Office Communicator 2007 SDK
et l'avez-vous référencé dans vbe ?
Bonjour
Merci de votre conseil.
Je déjà essai avec Microsft Lync2013 mais j'avais de problem sur adress de connection
Alors je essai de cherche Microsoft Office Communicator
Salutation
Velosona
Bonjour Vous n'êtes pas très bavard sur le problème rencontré.
Avez-vous installé Microsoft Office Communicator 2007 SDK et l'avez-vous référencé dans vbe ?
Bonjour Merci de votre conseil. Je déjà essai avec Microsft Lync2013 mais j'avais de problem sur adress de connection Alors je essai de cherche Microsoft Office Communicator Salutation Velosona
MichD
Bonjour,
Je ne peux pas tester cette procédure puisque "Linc" n'est pas installé sur mon ordinateur. Cependant, cette procédure doit être adaptée selon ton environnement.
A ) Tout le code ne doit pas être copié dans le même module. As-tu suivi les recommandations de l'auteur de la procédure?
B ) Dans la procédure, on fait référence à Sheet1. Sheet1 n'est pas le nom de l'onglet de la feuille, mais le nom de l'objet "Worksheet" dans l'interface VBA. Exemple. La liste des feuilles du classeur ressemble à ceci :Sheet1(Sheet1) Sheet2(sheet2) Le nom entre parenthèses "(sheet1)" est le nom de l'onglet de la feuille de calcul et "Sheet1" est le nom de la propriété de l'objet Worksheet de la feuille de calcul en VBA. Il ne faut pas mêler les 2.
C ) Dans cette ligne de code : additem_in_sheet v, o.FriendlyName, o.Status de la procédure "Sub showContacts", est-ce possible que o.FriendlyName représente le nom du contact et non son adresse de courriel? As-tu essayé?
D ) Tu aurais pu indiquer quelle ligne de code te pose problème? Il aurait été plus facile de répondre...
Bon courage!
MichD
Bonjour,
Je ne peux pas tester cette procédure puisque "Linc" n'est pas installé
sur mon ordinateur. Cependant, cette procédure doit être adaptée selon
ton environnement.
A ) Tout le code ne doit pas être copié dans le même module. As-tu suivi
les recommandations de l'auteur de la procédure?
B ) Dans la procédure, on fait référence à Sheet1. Sheet1 n'est pas le
nom de l'onglet de la feuille, mais le nom de l'objet "Worksheet" dans
l'interface VBA. Exemple. La liste des feuilles du classeur ressemble à
ceci :Sheet1(Sheet1)
Sheet2(sheet2)
Le nom entre parenthèses "(sheet1)" est le nom de l'onglet de la feuille
de calcul et "Sheet1" est le nom de la propriété de l'objet Worksheet de
la feuille de calcul en VBA. Il ne faut pas mêler les 2.
C ) Dans cette ligne de code :
additem_in_sheet v, o.FriendlyName, o.Status
de la procédure "Sub showContacts", est-ce possible que
o.FriendlyName représente le nom du contact et non son adresse de
courriel? As-tu essayé?
D ) Tu aurais pu indiquer quelle ligne de code te pose problème? Il
aurait été plus facile de répondre...
Je ne peux pas tester cette procédure puisque "Linc" n'est pas installé sur mon ordinateur. Cependant, cette procédure doit être adaptée selon ton environnement.
A ) Tout le code ne doit pas être copié dans le même module. As-tu suivi les recommandations de l'auteur de la procédure?
B ) Dans la procédure, on fait référence à Sheet1. Sheet1 n'est pas le nom de l'onglet de la feuille, mais le nom de l'objet "Worksheet" dans l'interface VBA. Exemple. La liste des feuilles du classeur ressemble à ceci :Sheet1(Sheet1) Sheet2(sheet2) Le nom entre parenthèses "(sheet1)" est le nom de l'onglet de la feuille de calcul et "Sheet1" est le nom de la propriété de l'objet Worksheet de la feuille de calcul en VBA. Il ne faut pas mêler les 2.
C ) Dans cette ligne de code : additem_in_sheet v, o.FriendlyName, o.Status de la procédure "Sub showContacts", est-ce possible que o.FriendlyName représente le nom du contact et non son adresse de courriel? As-tu essayé?
D ) Tu aurais pu indiquer quelle ligne de code te pose problème? Il aurait été plus facile de répondre...