Option Explicit '=========================================================== ' *アクセスログ出力クラス ' ' Ver 1.0 ' ' #ref(Z_cPutAccessLog_1.0.txt) ' #ref(cPutAccessLog_1.0.txt) ' ' **コンストラクタ ' Private Sub Class_Initialize() ' **初期化 ' Public Function Initialize() ' **ステータス取得 ' Public Function getStatus() ' ' **保存期間満了ログ削除 ' Public Function deleteLogSaveLimitOver() ' **ログ出力 ' Public Function putLog() ' ' **終了 ' Public Function Terminate() ' **デコンストラクタ ' Private Sub Class_Terminate() ' **Excel終了時処理 ' Private Sub foExcelApplication_WorkbookBeforeClose() ' **フィールドクリア ' Private Sub clearField() '=========================================================== 'アクセスログ名(最終形態) Private fsFormatIncPath As String 'アクセスログ名(書式のみ) Private fsFileNameIncPath As String 'Initialize済フラグ Private fbInitialize As Boolean 'ファイルクラス Private goAccessLogFile As New cFile Private WithEvents foExcelApplication As Excel.Application '# '# コンストラクタ '# Private Sub Class_Initialize() Set foExcelApplication = Excel.Application Call clearField End Sub '# '# 初期化 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# isFormatIncPath(String) '# ファイル名(パス付) '# Public Function Initialize( _ isFormatIncPath As String _ ) As Boolean Dim lbRet As Boolean '#初期化済でないこと If (fbInitialize <> False) Then lbRet = False '#実行条件適合 Else lbRet = True fbInitialize = True Dim lsDateName As String lsDateName = Replace(Date, "/", "-") fsFormatIncPath = isFormatIncPath fsFileNameIncPath = fsFormatIncPath & lsDateName & ".txt" lbRet = goAccessLogFile.Initialize(fsFileNameIncPath) If (lbRet = True) Then lbRet = goAccessLogFile.openFileForAppend() End If End If Initialize = lbRet End Function '# '# ステータス取得 '# [戻り値]: '# String '# CSV形式でプライベート変数内容を返却 '# [引 数]: '# なし '# Public Function getStatus( _ ) As String Dim lsRet As String lsRet = _ "fbInitialize=" & fbInitialize & _ ",fsFormatIncPath=" & fsFormatIncPath & _ ",fsFileNameIncPath=" & fsFileNameIncPath & _ ",goAccessLogFile=" & goAccessLogFile.getStatus getStatus = lsRet End Function '# '# 保存期間満了ログ削除 '# [戻り値]: '# String '# CSV形式でプライベート変数内容を返却 '# False:失敗 '# [引 数]: '# iiLogSaveDay(Integer) '# ログ保存期間日数 Public Function deleteLogSaveLimitOver( _ iiLogSaveDay As Integer _ ) As Boolean Dim lbRet As Boolean Dim loFormatIncPath As New cFile lbRet = loFormatIncPath.Initialize(fsFormatIncPath) 'アクセスログ名(書式のみ)が門内ないこと If (lbRet <> True) Then lbRet = False '#初期化済であること ElseIf (fbInitialize <> True) Then lbRet = False '保存日数0指定時削除しない ElseIf (iiLogSaveDay <= 0) Then lbRet = False '#実行条件適合 Else lbRet = True Dim lsFileDate As String Dim ltFileDate As Date Dim ltDelDate As Date ltDelDate = DateAdd("d", iiLogSaveDay * -1, Date) Dim lsDelFileName As String lsDelFileName = Dir(fsFormatIncPath & "*", vbNormal) While (lsDelFileName <> "") lsFileDate = _ Mid(lsDelFileName, _ Len(loFormatIncPath.getFileName) + 1, _ 10) If (IsDate(lsFileDate)) Then ltFileDate = CDate(lsFileDate) If (ltFileDate < ltDelDate) Then Dim loDelFile As New cFile lbRet = _ loDelFile.Initialize( _ loFormatIncPath.getPathName() & lsDelFileName _ ) If (lbRet = True) Then lbRet = loDelFile.deleteFile() End If End If End If lsDelFileName = Dir() Wend End If deleteLogSaveLimitOver = lbRet End Function '# '# ログ出力 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# strLogMsg(String) '# ログ内容 '# Public Function putLog( _ strLogMsg As String _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '#実行条件適合 Else lbRet = _ goAccessLogFile.writeFileLine( _ Format(Time, "hh:nn:ss ") & strLogMsg _ ) End If putLog = lbRet End Function '# '# 終了 '# [戻り値]: '# Boolean '# True: 成功 '# False:失敗 '# [引 数]: '# なし '# Public Function Terminate( _ ) As Boolean Dim lbRet As Boolean '#初期化済であること If (fbInitialize <> True) Then lbRet = False '#実行条件適合 Else lbRet = goAccessLogFile.Terminate() Call clearField End If Terminate = lbRet End Function '# '# デコンストラクタ '# Private Sub Class_Terminate() Set foExcelApplication = Nothing Call Me.Terminate End Sub '# '# Excel終了時処理 '# Private Sub foExcelApplication_WorkbookBeforeClose( _ ByVal Wb As Workbook, Cancel As Boolean _ ) Class_Terminate End Sub '# '# フィールドクリア '# Private Sub clearField() fbInitialize = False fsFormatIncPath = "" fsFileNameIncPath = "" End Sub