2016-12-27 67 views
-2

我一个工具,将捕获团队成员的利用率工作。我试图在Excel中获得用户的休息时间。请建议我一个vba代码,当用户离开LYNC时,它将在excel中启动一个计时器,并在他/她在线时停止计时器。 这就是我将能够获得用户的离开时间,其余的将被利用。 :)如何获得LYNC离开时用户

+0

欢迎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

+0

是的,我有尝试太多的代码,但他们都不是为持续时间。他们只是向我提供我的联系人列表中每个用户的当前状态。 – Rohan

回答

1

我已经做到了.... 下面是我使用的代码,它工作正常。 我做了一些更改以达到我的目的。

'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]