NMON第2分析工具

 Sub Run_sheets()

Dim FileBackupExt As String
Dim NumSettingRows As Integer
Dim SheetList(100) As String
Dim CPUSheetName As String
Dim PeriodYear As String
Dim PeriodMonth As String
Dim PeriodTime As String
Dim NumSettingRows2 As String
Dim ServerName(20) As String
Dim ServerIndex As Integer
Dim NumFiles As Integer
Dim NumSheets As Integer
Dim NumCPUSheetRows As Integer
Dim FileName As String
Dim FileNamePart() As String
Dim FileNamePartServer As String
Dim FileNamePartYear As String
Dim FileNamePartMonth As String
Dim FileNamePartDay As String
Dim FileNamePartTime As String
Dim CheckCPUFigureFlag As Boolean
Dim CPUBusyLevel As String
Dim CPUSamplingIntval As Integer
Dim CPUBusyDurationMin As Integer
Dim Fname As String
Dim BkFname As String
Dim Fpath As String
Dim sTemp As String
Dim FileList As Variant
Dim DeleteFlag As Boolean
Dim NumDeleteSheet As Integer
Dim DeleteSheetList(100) As String
Dim i, m, n, x As Integer


'=== Definition section ===
PeriodTime = "08"
CPUSheetName = "CPU_ALL"
CPUBusyLevel = ">=80"
CPUSamplingIntval = 5

'=== Define the file added extension ===
FileBackupExt = "org"

'=== Get the setting information ===
Sheets("Setting1").Select
NumSettingRows = ActiveSheet.UsedRange.Rows.Count - 1
Range("A1").Select
For i = 1 To NumSettingRows
    SheetList(i) = ActiveCell.Offset(i, 0).Value
Next

Sheets("Setting2").Select
PeriodYear = Range("B1").Value
PeriodMonth = Range("B2").Value
NumSettingRows2 = ActiveSheet.UsedRange.Rows.Count - 4
Range("A4").Select
For i = 1 To NumSettingRows2
    ServerName(i) = LCase(ActiveCell.Offset(i, 0).Value)
Next

'=== Build the file list ===
NumFiles = 0
If FileName = "" Or Dir(FileName) = "" Then
   FileList = Application.GetOpenFilename("NMON Files(*.xls),*.xls", 1, "Select NMON Excel file(s) to be processed", , True)
   If VarType(FileList) <> vbBoolean Then NumFiles = UBound(FileList)
End If

'=== Configure the "CPU_Busy_Duration" sheet ===
Sheets("CPU_Busy_Duration").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
For i = 1 To NumSettingRows2
    ActiveCell.Offset(0, i).Value = ServerName(i)
Next
For i = 1 To 31
    ActiveCell.Offset(i, 0).Value = i
Next

'=== Process each file one by one ===
For i = 1 To NumFiles
    FileName = FileList(i)
    CheckCPUFigureFlag = False
    FileNamePart = Split(FileName, ".")
    FileNamePartServer = LCase(FileNamePart(1))
    FileNamePartYear = Left(FileNamePart(2), 4)
    FileNamePartMonth = Mid(FileNamePart(2), 5, 2)
    FileNamePartDay = Right(FileNamePart(2), 2)
    FileNamePartTime = Left(FileNamePart(3), 2)
 
    '=== Validate whether it's needed to check for CPU busy duration figure for this file ===
    For x = 1 To NumSettingRows2
        If FileNamePartServer = ServerName(x) Then
            If FileNamePartYear = PeriodYear And FileNamePartMonth = PeriodMonth And FileNamePartTime = PeriodTime Then
                CheckCPUFigureFlag = True
                ServerIndex = x
                Exit For
            End If
        End If
    Next
   
    Workbooks.Open FileName:=FileName
    '=== Check for CPU busy duration figure ===
    If CheckCPUFigureFlag = True Then
        Sheets(CPUSheetName).Select
        NumCPUSheetRows = ActiveSheet.UsedRange.Rows.Count - 2
        CPUBusyDurationMin = WorksheetFunction.CountIf(Range("F1", "F" & NumCPUSheetRows), CPUBusyLevel) * CPUSamplingIntval
    End If
   
    '=== Prepare for removing non-necessary sheets ===
    NumSheets = Sheets.Count
    NumDeleteSheet = 0
    For m = 1 To NumSheets
        DeleteFlag = True
        For n = 1 To NumSettingRows
            If Sheets(m).Name = SheetList(n) Then
                DeleteFlag = False
                Exit For
            End If
        Next
        If DeleteFlag = True Then
            NumDeleteSheet = NumDeleteSheet + 1
            DeleteSheetList(NumDeleteSheet) = Sheets(m).Name
        End If
    Next
   
    If NumDeleteSheet < NumSheets Then
        Application.DisplayAlerts = False
   
        '=== Backup the original file ===
        If NumDeleteSheet >= 1 Then
            sTemp = Dir(FileName)
            Fname = Left(sTemp, InStrRev(sTemp, "."))
            BkFname = Fname & FileBackupExt & ".xls"
            Fname = Fname & "xls"
            Fpath = Left(FileName, InStrRev(FileName, "/"))
            ActiveWorkbook.SaveAs FileName:=Fpath & BkFname, FileFormat:=xlNormal, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        End If
       
        '=== Start deleting non-required worksheets ===
        For m = 1 To NumDeleteSheet
            Sheets(DeleteSheetList(m)).Delete
        Next
   
        '=== Save the file ===
        If NumDeleteSheet >= 1 Then
            ActiveWorkbook.SaveAs FileName:=Fpath & Fname, FileFormat:=xlNormal, _
                Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                CreateBackup:=False
        End If
   
        Application.DisplayAlerts = True
    End If
   
    '=== Close the workbook ===
    ActiveWorkbook.Close
   
    '=== Store the CPU busy duration figure ===
    If CheckCPUFigureFlag = True Then
        Sheets("CPU_Busy_Duration").Select
        Range("A1").Select
        ActiveCell.Offset(Int(FileNamePartDay), ServerIndex).Value = CPUBusyDurationMin
    End If
Next

'=== Completed the tasks ===
If NumFiles >= 1 Then
    Sheets("CPU_Busy_Duration").Select
    Range("A1").Select
    For x = 1 To NumSettingRows2
        ActiveCell.Offset(32, x).Value = WorksheetFunction.Sum(Range(ActiveCell.Offset(1, x), ActiveCell.Offset(31, x)))
    Next
   
    MsgBox "Tasks completed.", vbInformation
End If


End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值