-2
我一个工具,将捕获团队成员的利用率工作。我试图在Excel中获得用户的休息时间。请建议我一个vba代码,当用户离开LYNC时,它将在excel中启动一个计时器,并在他/她在线时停止计时器。 这就是我将能够获得用户的离开时间,其余的将被利用。 :)如何获得LYNC离开时用户
我一个工具,将捕获团队成员的利用率工作。我试图在Excel中获得用户的休息时间。请建议我一个vba代码,当用户离开LYNC时,它将在excel中启动一个计时器,并在他/她在线时停止计时器。 这就是我将能够获得用户的离开时间,其余的将被利用。 :)如何获得LYNC离开时用户
我已经做到了.... 下面是我使用的代码,它工作正常。 我做了一些更改以达到我的目的。
'This Macro is working fine
Public Sub macro10()
LyncContactsStatus
End Sub
Function LyncContactsStatus() As Variant
Dim appLync As CommunicatorAPI.Messenger
Dim LyncDirectory As CommunicatorAPI.IMessengerContacts
Dim LyncContact As CommunicatorAPI.IMessengerContact
Dim arrContacts() As Variant
Dim lngLoopCount As Long
Set appLync = CreateObject("Communicator.UIAutomation")
appLync.AutoSignin
Set LyncDirectory = appLync.MyContacts
ReDim arrContacts(LyncDirectory.Count - 1, 1)
For lngLoopCount = 0 To LyncDirectory.Count - 1
Set LyncContact = LyncDirectory.Item(lngLoopCount)
arrContacts(lngLoopCount, 0) = LyncContact.FriendlyName
arrContacts(lngLoopCount, 1) = LyncStatus(LyncContact.Status)
ActiveCell.Value = LyncContact.FriendlyName
ActiveCell.Offset(0, 1).Value = LyncContact.Status
If LyncContact.Status = MISTATUS_AWAY Then
If ActiveCell.Offset(0, 3).Value = "" Then
ActiveCell.Offset(0, 3).Value = Now
End If
End If
If LyncContact.Status = MISTATUS_ONLINE Then
If ActiveCell.Offset(0, 3).Value <> "" Then
ActiveCell.Offset(0, 4).Value = Now
Sheet1.Range(ActiveCell, ActiveCell.Offset(0, 4)).Select
Selection.Copy
Dim i
i = 1
Do
i = i + 1
If Sheet2.Cells(i, 1).Value = "" Then
Sheet2.Activate
Cells(i, 1).Select
'Sheet2.Activate
Sheet2.Paste
i = i + 1
Sheet1.Activate
End If
Loop Until Sheet2.Cells(i, 1).Value = ""
ActiveCell.Offset(0, 3) = ""
ActiveCell.Offset(0, 4) = ""
End If
End If
ActiveCell.Offset(1, 0).Activate
Next lngLoopCount
LyncContactsStatus = arrContacts
Set appLync = Nothing
Cells(1, 1).Activate
Application.OnTime Now + TimeValue("00:00:30"), "Macro10"
End Function
Function LyncStatus(IntStatus As Integer) As String
Select Case IntStatus
Case 1 'MISTATUS_OFFLINE
LyncStatus = "Offline"
Case 2 'MISTATUS_ONLINE
LyncStatus = "Online"
Case 6 'MISTATUS_INVISIBLE
LyncStatus = "Invisible"
Case 10 'MISTATUS_BUSY
LyncStatus = "Busy"
Case 14 'MISTATUS_BE_RIGHT_BACK
LyncStatus = "Be Right Back"
Case 18 'MISTATUS_IDLE
LyncStatus = "Idle"
Case 34 'MISTATUS_AWAY
LyncStatus = "Away"
Case 50 'MISTATUS_ON_THE_PHONE
LyncStatus = "On the Phone"
Case 66 'MISTATUS_OUT_TO_LUNCH
LyncStatus = "Out to Lunch"
Case 82 'MISTATUS_IN_A_MEETING
LyncStatus = "In a meeting"
Case 98 'MISTATUS_OUT_OF_OFFICE
LyncStatus = "Out of office"
Case 114 'MISTATUS_OUT_OF_OFFICE
LyncStatus = "Do not disturb"
Case 130 'MISTATUS_IN_A_CONFERENCE
LyncStatus = "In a conference"
Case Else
LyncStatus = "Unknown"
End Select
End Function
该代码将记录您的联系人符在表2
对于任何帮助,请寄给我的“[email protected]”
欢迎S.O!你有尝试过什么吗?如果是这样,请提供代码。看看到[旅游](http://stackoverflow.com/tour)和[如何提问](http://stackoverflow.com/help/how-to-ask)。友情提醒:StackOverflow不是“我们为您代码”的服务提供商。 [介绍VBA](https://blog.udemy.com/excel-macros-tutorial/)或[中等高级教程(http://analysistabs.com/excel-vba/codes-examples-macros-how -tos,最有用的,基础知识,先进/)和我的[个人最喜欢的(http://analystcave.com/excel-vba-tutorial/) – Sgdva
是的,我有尝试太多的代码,但他们都不是为持续时间。他们只是向我提供我的联系人列表中每个用户的当前状态。 – Rohan