2010-11-18 8 views
2

VBAスクリプトの実行に時間がかかるのですか? 私はPHPから、この値との差を計算するために、スクリプトの前に1度呼び出されたmicrotime()のようなものがあることを知っています...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

あなたは、より正確なタイミング情報を必要とする場合、私は、以下の機能の1開始時刻と終了時刻を取得

を使用することをお勧めします
#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 

システムによっては、より正確な情報が返されるはずです。個人的に、私はtimeGetTime

注意を好むWin7の64ビット/オフィス2013分の2010 32ビット環境でtimeGetTimeの絶対値が使用されることをお勧めしますが、その差(例えばendTimeは-のstartTimeが)でかなり正確な値であるされていないことmiliseconds

関連する問題