2010-11-18 2 views
2

VBA 스크립트를 실행하는 데 걸리는 시간을 어떻게 알 수 있습니까? 나는이 값과의 차이를 계산할 수 있기 위해 스크립트 전에 한 번 호출 된 microtime()과 같은 것이 있다는 것을 PHP로부터 알고 있습니다 ...Word의 VBA : 스크립트 실행 시간 받기

VBA와 동일한 기능이 있습니까?

답변

4

Timer()이라는 자정 이후 시간을 초 단위로 반환하는 함수가 있습니다. 밀리 초를 포함합니다. VBA에서 마이크로 초 해상도 타이머를 알지 못합니다.

An article on About.com은 VBA에서 직접 Win32 API 호출을 만들어 사용자 고유의 마이크로 타이머를 작성할 수 있음을 시사합니다.

+0

답변 주셔서 감사합니다.하지만 밀리 초 단위로 표시 할 수 있습니까? – poeschlorn

+1

Timer()는 5406.123과 같은 것을 반환합니다. 여기서 123은 밀리 초를 나타냅니다. 그래서, 밀리 세컨드 타이머가 있습니다. – sblom

4

내 VBA 프로젝트 중 하나에서 스크립트의 성능을 일시적으로 측정하는 데 사용한 샘플 코드입니다. 또한

당신이 당신의 스크립트의 성능을

최적화하기 위해 자원의 충분한을 찾을 수 있습니다 더 정확한 타이밍 정보가 필요 경우
Public Sub generate(ByRef generators() As Generator) 

    Dim startTime As Double 

    OptimizePerformance doc 

    '/////////////////below is the line that matters  
    startTime = Timer 

    '////////// your code that is to be measured (in time) here ////////// 

    MsgBox Format(Timer - startTime, "00.00") & " seconds" 

    removeOptimization doc 
End Sub 
0

, 내가 시작 시간과 종료 시간을 얻을 다음 기능 중 하나를 사용하는 것이 좋습니다 것입니다

#If Win64 Then 
Private Declare PtrSafe Function GetTickCount Lib "kernel32"() As LongLong 
Private Declare PtrSafe Function timeGetTime Lib "winmm.dll"() As LongLong 
#Else 
Private Declare Function GetTickCount Lib "kernel32"() As Long 
Private Declare Function timeGetTime Lib "winmm.dll"() As Long 
#End If 

시스템에 따라 더 정확한 정보를 반환해야합니다. 개인적으로, Win7에 64 비트/사무실 2,013분의 2,010 32 비트 환경에서 나는 timeGetTime의 절대 값을 사용하는 것이 좋습니다되지 않습니다 timeGetTime

주를 선호하지만, 차이 (예 : endTime- 사용자 - startTime을은)에서 매우 정확한 값 밀리 초