2008-10-04 8 views
2

비활성 기간 (일부 워크 시트 숨기기/보호) 후 Excel 통합 문서 매크로에서 조치를 취하고 싶습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?Excel 통합 문서에서 사용자 비활성을 감지하는 방법

나는 사용자가 활성화되었는지 정기적으로 확인하기 위해 Application.OnTime을 사용한다고 가정합니다. 그러나 사용자가 "활성"상태인지 (예 : 통합 문서와 관련하여 뭔가를했는지)보기 위해 어떤 이벤트를 처리해야합니까?

설명 : 변경하려는 내용이 아니라 모두 활동을 감지하고 싶습니다. 나는. 키보드로 이동 마우스 클릭, 선택, 복사, 변경, 워크 시트, ...을 포함

나는 UI의 이벤트가 사용자 활동을 대표 일어날 때, 나는 이렇게 변수를 설정합니다 있으리라 믿고있어

:

LastActivityTime = Now 

이고 매크로가 Application.OnTime이면이 변수를 검사하여 사용자가 최근에 활성 상태인지 확인합니다. 이 변수를 설정하기 위해 어떤 이벤트 (SheetChange 제외)를 처리해야합니까? 나는 KeyUpMouseUp 이벤트가있을 것이라고 기대했지만,이 두 가지로 충분했을 것입니다.

업데이트 : Workbook_SheetActivate, Workbook_SheetSelectionChangeWorkbook_WindowActivate을 처리하여 구현했습니다. 현실적으로 이것은 아마도 충분합니다.

답변

2

저는 Workbook_SheetActivate, Workbook_SheetSelectionChange 및 Workbook_WindowActivate를 처리하여이 기능을 구현했습니다. 현실적으로 이것은 아마도 충분합니다.

0

간단한 방법 중 하나는 통합 문서의 내용을 마지막으로 확인한 내용과 비교하는 것입니다. 나는 이것을 Application.OnTime과 결합하는 것이 당신의 걱정을 해결할 것이라고 믿는다.

+0

감사합니다.하지만 통합 문서도 변경되지 않는 활동을 감지하려고합니다. 내 질문에 몇 가지 설명을 추가했습니다. – Joe

1

응용 프로그램 객체의 evary 단일 이벤트를 처리하거나 GetLastInputInfo 기능을 사용하는 두 가지 솔루션 만 볼 수 있습니다.

+0

GetLastInputInfo는 유망하지만 사용자 세션과 관련이있는 것으로 보입니다. Excel 통합 문서와 관련된 사용자 활동에만 관심이 있습니다. Excel 프로세스가 수행 할 것입니다. – Joe

관련 문제