Excel

【Excel】VBAマクロで処理時間の計測(秒:ミリ秒:時分秒:サンプル:分:timer)方法【Timer関数、DateAdd関数、Format関数】

当サイトでは記事内に広告を含みます

この記事では、VBAマクロで処理時間の計測(秒:ミリ秒:時分秒:サンプル:分:timer)方法【Timer関数、DateAdd関数、Format関数】について解説します。

ポイントとしては

Timer関数、

DateAdd関数、

Format関数

を使用することです。

この解説は初心者にもわかりやすいように、変数名を少し変わった日本語ローマ字表記で示しています。

あなた自身が使う際には、これを適切な英語表記に変更してご活用ください。

それでは、詳しく見ていきましょう!

VBAマクロで処理時間の計測(秒+ミリ秒表記で:サンプル付)方法

それではまず、秒+ミリ秒で処理時間を計測する方法について解説していきます。

このサンプルでは、1シートのすべての各列の合計を最終行の次に表示させ、その後にファイルを上書き保存する時間を計測します。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SekiMiriKei()

    Dim kaishiJikan As Double
    Dim owariJikan As Double
    Dim keikaJikan As Double
    Dim i As Integer
    Dim retsuMax As Integer
    Dim gyoMax As Integer
    Dim goukei As Double

    kaishiJikan = Timer

    retsuMax = ActiveSheet.UsedRange.Columns.Count
    gyoMax = ActiveSheet.UsedRange.Rows.Count

    For i = 1 To retsuMax
        goukei = Application.WorksheetFunction.Sum(ActiveSheet.Columns(i))
        ActiveSheet.Cells(gyoMax + 1, i).Value = goukei
    Next i

    ActiveWorkbook.Save

    owariJikan = Timer
    keikaJikan = owariJikan - kaishiJikan

    MsgBox "処理時間は " & Format(keikaJikan, "0.000") & " 秒です。", vbInformation

End Sub

コードのAlt+F8を押し、マクロ選択画面で関数名を実行します。

このコードでは、処理開始時刻と終了時刻を取得し、その差で処理時間を計算します。

Timer関数を使用しています。

 

VBAマクロで処理時間の計測(分表記で:サンプル付)方法

続いては、分表記で処理時間を計測する方法について解説していきます。

このサンプルでは、指定ディレクトリのExcelファイルすべてを別のディレクトリにコピーし、

その後、これらのファイルを1ブック1シートに縦方向に結合させる処理の時間を計測します。


Sub FunKei()

    Dim kaishiJikan As Date
    Dim owariJikan As Date
    Dim keikaJikan As Long
    Dim sourceFolder As String, targetFolder As String
    Dim file As String, targetFile As String
    Dim wb As Workbook, ws As Worksheet
    Dim lastRow As Long

    kaishiJikan = Now
    sourceFolder = "C:\SourceFolder\" ' ソースフォルダのパス
    targetFolder = "C:\TargetFolder\" ' ターゲットフォルダのパス

    file = Dir(sourceFolder & "*.xlsx")
    Do While file <> ""
        FileCopy sourceFolder & file, targetFolder & file
        file = Dir
    Loop

    file = Dir(targetFolder & "*.xlsx")
    Set wb = Workbooks.Add
    Set ws = wb.Sheets(1)

    Do While file <> ""
        With Workbooks.Open(targetFolder & file)
            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
            .Sheets(1).UsedRange.Copy ws.Cells(lastRow, 1)
            .Close False
        End With
        file = Dir
    Loop

    wb.SaveAs targetFolder & "Merged.xlsx"
    wb.Close False

    owariJikan = Now
    keikaJikan = DateDiff("n", kaishiJikan, owariJikan)

    MsgBox "処理時間は " & keikaJikan & " 分です。", vbInformation

End Sub

コードのAlt+F8を押し、マクロ選択画面で関数名を実行します。

この処理では、DateAdd関数を使用して、開始時間と終了時間の差を分で表示します。

 

VBAマクロで処理時間の計測(時分秒の表記で:サンプル付)方法

最後に、時分秒で処理時間を計測する方法について解説します。

これも前述のサンプルと同様の処理内容ですが、時間の表示方法が時分秒と異なります。



Sub JikanKei()

    Dim kaishiJikan As Date
    Dim owariJikan As Date
    Dim keikaJikan As String
    Dim sourceFolder As String, targetFolder As String
    Dim file As String, targetFile As String
    Dim wb As Workbook, ws As Worksheet
    Dim lastRow As Long

    kaishiJikan = Now
    sourceFolder = "C:\SourceFolder\" ' ソースフォルダのパス
    targetFolder = "C:\TargetFolder\" ' ターゲットフォルダのパス

    file = Dir(sourceFolder & "*.xlsx")
    Do While file <> ""
        FileCopy sourceFolder & file, targetFolder & file
        file = Dir
    Loop

    file = Dir(targetFolder & "*.xlsx")
    Set wb = Workbooks.Add
    Set ws = wb.Sheets(1)

    Do While file <> ""
        With Workbooks.Open(targetFolder & file)
            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
            .Sheets(1).UsedRange.Copy ws.Cells(lastRow, 1)
            .Close False
        End With
        file = Dir
    Loop

    wb.SaveAs targetFolder & "Merged.xlsx"
    wb.Close False

    owariJikan = Now
    keikaJikan = Format((owariJikan - kaishiJikan), "hh:nn:ss")

    MsgBox "処理時間は " & keikaJikan & " です。", vbInformation

End Sub

コードのAlt+F8を押し、マクロ選択画面で関数名を実行します。この処理では、Format関数を使用して、開始時間と終了時間の差を時分秒で表示します。

 

まとめ VBAマクロで処理時間の計測(時分秒:サンプル:timer:時間分)方法

この記事では、ExcelのVBAマクロを使って処理時間を計測する方法を、具体的なサンプルコードを通して紹介しました。

これらのコードは基本的な構造を示していますが、実際の用途に合わせて適宜変更する必要があります。

VBAを使用することで、処理時間の計測や最適化に役立つ情報を得ることができます。是非、これらのサンプルを活用して、自分のプロジェクトに適用してみてください。