MALICIOUS
224
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1547.001 Registry Run Keys / Startup Folder
T1137.005 DLL Search Order Hijacking
The sample is an Excel file containing VBA macros. High-severity heuristics indicate that the VBA code attempts to achieve persistence by copying the workbook to the Excel XLSTART folder and infects other workbooks using an Application.OnSheetActivate hook. The document body contains conversion factors and building dimensions, which appear to be a lure to disguise the malicious macro functionality.
Heuristics 9
-
VBA project inside OOXML medium 5 related findings OOXML_VBADocument contains a VBA project — VBA macros present
-
GetObject call high OLE_VBA_GETOBJGetObject callMatched line in script
Set ObjetoWMI = GetObject("WINMGMTS:") -
VBA copies the workbook into the Excel XLSTART startup folder high OLE_VBA_XLSTART_PERSISTENCEThe macro saves a copy of the workbook into Application.StartupPath (the Excel XLSTART folder) so the code auto-loads every time Excel starts. This is the persistence stage of a resident Excel macro virus, not normal document behaviour.Matched line in script
ChDir Application.StartupPath -
VBA infects other workbooks via an OnSheetActivate copy hook high OLE_VBA_WORKBOOK_INFECTION_SPREADERThe macro installs an Application.OnSheetActivate handler that copies a sheet (carrying the macro) into the active workbook whenever a sheet is activated. This is the replication stage of a resident Excel macro virus: it infects every workbook the user opens.Matched line in script
Application.OnSheetActivate = "check_files" -
VBA p-code auto-exec with execution tokens high OLE_VBA_PCODE_AUTOEXEC_EXECTriggers on the COMBINATION of two tokens co-occurring in the same compiled VBA/cache stream: an auto-execution entry point (Auto_Open / AutoOpen / Document_Open / Workbook_Open / Auto_Close / AutoClose) AND a shell/download/object-execution token (Shell, CreateObject, GetObject, PowerShell, cmd.exe, URLDownloadToFile, WinHttp, XMLHTTP, ADODB.Stream, ShellExecute, ExecuteExcel4Macro). Neither token alone fires it — it is the pairing that flags p-code-only or source-extraction-failure macro documents where the visible VBA source is unavailable. The matched tokens are named in the detail line below.
-
Auto_Open macro low OLE_VBA_AUTOAuto_Open macroMatched line in script
Sub auto_open() -
Embedded OLE object medium OOXML_OLE_OBJECTDocument contains an embedded OLE object
-
External workbook data link low OOXML_EXTERNAL_REL_DATALINKExternal workbook reference in xl/externalLinks/_rels/externalLink1.xml.rels: /SPREADSHEET/PEBSteel/Wind load of ASCE Rev03.xls
-
Hidden worksheet (veryHidden) low OOXML_HIDDEN_SHEETExcel workbook contains 1 hidden sheet(s) — hidden sheets are commonly used to conceal macro code, staging data, or intermediate payload construction
Extracted artifacts 32
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source from OOXML) | 158253 bytes |
SHA-256: 7ffb6c92d5fb61cf27ee08f98313ca1f301741a529b9198a4e47954046c800c0 |
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisWorkbook"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
'Private Sub Workbook_Open()
' Application.Visible = False
'frmPass.Show
'End Sub
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'If SaveAsUI Then Cancel = True
'End Sub
Attribute VB_Name = "Sheet12"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Control = "CommandButton2, 8, 0, MSForms, CommandButton"
Attribute VB_Control = "CommandButton1, 6, 1, MSForms, CommandButton"
Private Sub CommandButton1_Click()
ActiveWorkbook.Worksheets("Input").Activate
ActiveWorkbook.Worksheets("Output").Visible = False
End Sub
Private Sub CommandButton2_Click()
Range("A1:H51").Select
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlPortrait
.PaperSize = xlPaperA4
.BlackAndWhite = True
End With
Selection.PrintOut Copies:=1, Collate:=True
Range("K43").Select
End Sub
Attribute VB_Name = "Sheet2"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Private Sub CommandButton1_Click()
ActiveWorkbook.Worksheets("Velocity Pressure").Visible = True
ActiveWorkbook.Worksheets("Velocity Pressure").Activate
End Sub
Private Sub CommandButton2_Click()
ActiveWorkbook.Worksheets("Kzt").Visible = True
ActiveWorkbook.Worksheets("Kzt").Activate
End Sub
Private Sub CommandButton3_Click()
ActiveWorkbook.Worksheets("Output").Visible = True
ActiveWorkbook.Worksheets("Output").Activate
End Sub
Private Sub CommandButton4_Click()
ActiveWorkbook.Worksheets("Bracing").Visible = True
ActiveWorkbook.Worksheets("Bracing").Activate
End Sub
Attribute VB_Name = "Sheet3"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Name = "Module2"
Option Explicit
'Specify the Wind Effective Area
Function Area(Span, Bay) As Double
Area = WorksheetFunction.max(Span * Span / 3, Bay * Span)
End Function
'Specify the Toward Internal Coefficient GCpi
Function InternalCoefficient(ExposureCondition) As Double
If ExposureCondition = "Enclosed" Then
InternalCoefficient = 0.18
ElseIf ExposureCondition = "Partially Enclosed" Then
InternalCoefficient = 0.55
Else
InternalCoefficient = 0#
End If
End Function
'Specify the Coefficient (GCp-GCpi) for girt of SW and EW of Building eave height is less than 60ft
Function GirtCoefficient(EffectiveWindArea, ExposureCondition, RoofAngle, Zone, Direction) As Double
Dim gcp, GCpi As Double
On Error Resume Next
Select Case Direction
Case "Toward"
Select Case Zone
Case 4, 5
If EffectiveWindArea <= 10 Then
gcp = 1
ElseIf EffectiveWindArea < 500 Then
gcp = 1.1766 - 0.1766 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.7
End If
End Select
If RoofAngle <= 10 Then
'Reduce GCp 10% when Roof angle less than 10 degrees
GCpi = -InternalCoefficient(ExposureCondition)
GirtCoefficient = 0.9 * gcp - GCpi
Else
GCpi = -InternalCoefficient(ExposureCondition)
GirtCoefficient = gcp - GCpi
End If
Case "Away"
Select Case Zone
Case 4
If EffectiveWindArea <= 10 Then
gcp = -1.1
ElseIf EffectiveWindArea < 500 Then
gcp = -1.2766 + 0.1766 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
Case 5
If EffectiveWindArea <= 10 Then
gcp = -1.4
ElseIf EffectiveWindArea < 500 Then
gcp = -1.7532 + 0.3532 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
End Select
If RoofAngle <= 10 Then
'Reduce GCp 10% when Roof angle less than 10 degrees
GCpi = InternalCoefficient(ExposureCondition)
GirtCoefficient = 0.9 * gcp - GCpi
Else
GCpi = InternalCoefficient(ExposureCondition)
GirtCoefficient = gcp - GCpi
End If
End Select 'Of select Direction
End Function
'Specify the Coefficient (GCp-GCpi) for purlin of Building eave height is less than 60ft
Function PurlinCoefficient(EffectiveWindArea, ExposureCondition, RoofStyle, RoofAngle, Zone, Direction) As Double
Dim Coefficient As Double
Dim gcp, GCpi As Double
On Error Resume Next
Select Case RoofStyle
'\\*********************************************************************************************//'
'For Gable Roofs
Case "Gable Roofs"
Select Case Direction
Case "Toward"
Select Case Zone
Case 1, 2, 3
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 27 Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 0.9
ElseIf EffectiveWindArea <= 100 Then
gcp = 1 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.8
End If
End If
End Select 'Of Zone select
GCpi = -InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
'End Select case of Toward
Case "Away"
Select Case Zone
Case 1
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1#
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.9
End If
ElseIf RoofAngle <= 27 Then
If EffectiveWindArea <= 10 Then
gcp = -0.9
ElseIf EffectiveWindArea <= 100 Then
gcp = -1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -1#
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.2 + 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
End If
Case 2
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.5 + 0.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 27 Then
If EffectiveWindArea <= 10 Then
gcp = -1.7
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.2 + 0.5 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -1.2
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.4 + 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1#
End If
End If
Case 3
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -2.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -4.5 + 1.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 27 Then
If EffectiveWindArea <= 10 Then
gcp = -2.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.2 + 0.6 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -2#
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -1.2
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.4 + 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1#
End If
End If
End Select 'Of Zone select
GCpi = InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
End Select 'Of Direction select
'\\*********************************************************************************************//'
'For Hip Roofs
Case "Hip Roofs"
Select Case Direction
Case "Toward"
Select Case Zone
Case 1, 2, 3
If (RoofAngle > 7) And (RoofAngle <= 27) Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
End If
End Select 'Of Zone select
GCpi = -InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
'End Select case of Toward
Case "Away"
Select Case Zone
Case 1
If (RoofAngle > 7) And (RoofAngle <= 27) Then
If EffectiveWindArea <= 10 Then
gcp = -0.9
ElseIf EffectiveWindArea <= 100 Then
gcp = -1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
End If
Case 2
If (RoofAngle > 7) And (RoofAngle <= 27) Then
If EffectiveWindArea <= 10 Then
gcp = -1.7
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.2 + 0.5 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
End If
Case 3
If (RoofAngle > 7) And (RoofAngle <= 27) Then
If EffectiveWindArea <= 10 Then
gcp = -2.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.2 + 0.6 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -2#
End If
End If
End Select 'Of Zone select
GCpi = InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
End Select 'Of Direction select
'\\*********************************************************************************************//'
'For Multispan Gable Roofs
Case "Multispan Gable Roofs"
Select Case Direction
Case "Toward"
Select Case Zone
Case 1, 2, 3
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
Else
If RoofAngle <= 30 Then
If EffectiveWindArea <= 10 Then
gcp = 0.6
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.8 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.4
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 1#
ElseIf EffectiveWindArea <= 100 Then
gcp = 1.2 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.8
End If
End If
End If
End Select 'Of Zone select
GCpi = -InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
'End Select case of Toward
Case "Away"
Select Case Zone
Case 1
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1#
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.9
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = -0.9
ElseIf EffectiveWindArea <= 100 Then
gcp = -1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
Else
If RoofAngle <= 30 Then
If EffectiveWindArea <= 10 Then
gcp = -1.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.8 + 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.4
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -2
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.9 + 0.9 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
End If
End If
Case 2
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.5 + 0.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = -1.7
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.2 + 0.5 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
Else
If RoofAngle <= 30 Then
If EffectiveWindArea <= 10 Then
gcp = -2.2
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.7 + 0.5 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.7
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -2.5
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.3 + 0.8 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.7
End If
End If
End If
Case 3
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -2.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -4.5 + 1.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 27 Then
If EffectiveWindArea <= 10 Then
gcp = -2.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.2 + 0.6 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -2#
End If
Else
If RoofAngle <= 30 Then
If EffectiveWindArea <= 10 Then
gcp = -2.7
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.7 + 1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.7
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -2.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.5 + 0.9 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.7
End If
End If
End If
End Select 'Of Zone select
GCpi = InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
End Select 'Of Direction select
'\\*********************************************************************************************//'
'For Monoslope Roofs
Case "Monoslope Roofs"
Select Case Direction
Case "Toward"
Select Case Zone
Case 1, 2, 3
If RoofAngle <= 3 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 0.4
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.5 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
End If
End Select 'Of Zone select
GCpi = -InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
'End Select case of Toward
Case "Away"
Select Case Zone
Case 1
If RoofAngle <= 3 Then
If EffectiveWindArea <= 10 Then
gcp = -1#
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.9
End If
ElseIf RoofAngle <= 10 Then
gcp = -1.1
Else
If EffectiveWindArea <= 10 Then
gcp = -1.3
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.5 + 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
End If
Case 2
If RoofAngle <= 3 Then
If EffectiveWindArea <= 10 Then
gcp = -1.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.5 + 0.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = -1.3
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.4 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -1.6
ElseIf EffectiveWindArea <= 100 Then
gcp = -2# + 0.4 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
End If
Case 3
If RoofAngle <= 3 Then
If EffectiveWindArea <= 10 Then
gcp = -2.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -4.5 + 1.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = -1.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.4 + 0.6 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.2
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -2.9
ElseIf EffectiveWindArea <= 100 Then
gcp = -3.8 + 0.9 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -2#
End If
End If
End Select 'Of Zone select
GCpi = InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
End Select 'Of Direction select
'\\*********************************************************************************************//'
'For Sawtooth Roofs
Case "Sawtooth Roofs"
Select Case Direction
Case "Toward"
Select Case Zone
Case 1
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 0.7
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.8766 - 0.1766 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.4
End If
End If
Case 2
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 1.1
ElseIf EffectiveWindArea <= 100 Then
gcp = 1.4 - 0.3 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.8
End If
End If
Case 3
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = 0.3
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.4 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.2
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = 0.5
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.7 - 0.2 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.3
End If
Else
If EffectiveWindArea <= 10 Then
gcp = 0.8
ElseIf EffectiveWindArea <= 100 Then
gcp = 0.9 - 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = 0.7
End If
End If
End Select 'Of Zone select
GCpi = InternalCoefficient(ExposureCondition)
PurlinCoefficient = gcp - GCpi
'End Select case of Toward
Case "Away"
Select Case Zone
Case 1
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1#
ElseIf EffectiveWindArea <= 100 Then
gcp = -1.1 + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.9
End If
ElseIf RoofAngle <= 10 Then
If EffectiveWindArea <= 10 Then
gcp = -0.9
ElseIf EffectiveWindArea <= 100 Then
gcp = -1# + 0.1 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -0.8
End If
Else
If EffectiveWindArea <= 10 Then
gcp = -2.2
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.8474 - 0.6474 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
End If
Case 2
If RoofAngle <= 7 Then
If EffectiveWindArea <= 10 Then
gcp = -1.8
ElseIf EffectiveWindArea <= 100 Then
gcp = -2.5 + 0.7 * WorksheetFunction.Log10(EffectiveWindArea)
Else
gcp = -1.1
End If
ElseIf RoofAngle <= 10 Then
…
|
|||
ooxml_oleobject_00.bin |
ooxml-ole-object | OOXML embedded OLE part: xl/embeddings/oleObject2.bin | 24064 bytes |
SHA-256: 62aea69eb790cc359a1dcf1f8741c6295dbed9cc59a2c0875fc3e9e8f0535de7 |
|||
ooxml_oleobject_01.bin |
ooxml-ole-object | OOXML embedded OLE part: xl/embeddings/oleObject1.bin | 30720 bytes |
SHA-256: cbcf85ef579eef2cbc5ab1c9923c95cefd692dde8b802c939b29d9f71027e865 |
|||
vbaProject_00.bin |
vba-project | OOXML VBA project: xl/vbaProject.bin | 388096 bytes |
SHA-256: 3edc255d0ecb5c643c76f4af679c7b824140efe744653fe544ab281b88139bfb |
|||
emf_00.emf |
ooxml-emf | OOXML EMF part: xl/media/image297.emf | 1332 bytes |
SHA-256: 2582cb4a73d1348236fd7c8a6ba8a7d6aa224b98a84cd3431232708407d9cab1 |
|||
emf_01.emf |
ooxml-emf | OOXML EMF part: xl/media/image298.emf | 1316 bytes |
SHA-256: c2e53fd41a946665ffbc5aaf63a524f46285368a900f8b3408453f6a3b30bdda |
|||
emf_02.emf |
ooxml-emf | OOXML EMF part: xl/media/image299.emf | 1352 bytes |
SHA-256: 1706d3b0f0245f2f41dad86661e00ae97e98412f8ed4cee926a4fdf6c0725118 |
|||
emf_03.emf |
ooxml-emf | OOXML EMF part: xl/media/image300.emf | 1352 bytes |
SHA-256: eb00fe1689f0a3311a9ac49b620f41817eee58b9efb3ebbb96c9da497485f30b |
|||
emf_04.emf |
ooxml-emf | OOXML EMF part: xl/media/image301.emf | 1316 bytes |
SHA-256: 885b26b89a959e1c33787064973a10de18bb7ec1b7e59541f969f197685f83f5 |
|||
emf_05.emf |
ooxml-emf | OOXML EMF part: xl/media/image296.emf | 1352 bytes |
SHA-256: cd77afab8b9fa3c3b65c3acdef9a20d45d952b6fcea8c16f7123f47bec286a01 |
|||
emf_06.emf |
ooxml-emf | OOXML EMF part: xl/media/image295.emf | 1352 bytes |
SHA-256: 19d3e8185ce79e873bb71bc20376ba9e1e7419821d6fcc22163f5260db538624 |
|||
emf_07.emf |
ooxml-emf | OOXML EMF part: xl/media/image294.emf | 1332 bytes |
SHA-256: 1f3ede3a911df9465e08636555587e2e10400485f01454b23fdc97188638b2b9 |
|||
emf_08.emf |
ooxml-emf | OOXML EMF part: xl/media/image290.emf | 1352 bytes |
SHA-256: 895fbcc06f5cc20ebc4f51caeafcdd9e8ebda592134e0e6a760d0b7511045c78 |
|||
emf_09.emf |
ooxml-emf | OOXML EMF part: xl/media/image291.emf | 1344 bytes |
SHA-256: f8a10faad23ba6bf52e0654ce547ad7a045f86d49f39c3452fb976c23c5528f2 |
|||
emf_10.emf |
ooxml-emf | OOXML EMF part: xl/media/image292.emf | 1352 bytes |
SHA-256: 79398c60da314d2a9bb5d12990a1db1130b1e348068a69d202dbb49f6710e5f5 |
|||
emf_11.emf |
ooxml-emf | OOXML EMF part: xl/media/image293.emf | 1352 bytes |
SHA-256: 6da9f936b5cd5c3bf8862cd8ea6f5e7bc6c12002306618b86bf9a33912b25b9e |
|||
emf_12.emf |
ooxml-emf | OOXML EMF part: xl/media/image302.emf | 1352 bytes |
SHA-256: 48687022b20005cce20e00a51df1a60cc10af7f0b4495b48637ec76a297bbde0 |
|||
emf_13.emf |
ooxml-emf | OOXML EMF part: xl/media/image303.emf | 1352 bytes |
SHA-256: 1baa08b171cd745ab73db642440be14163c3c186e542c22f7744402be4a7720c |
|||
emf_14.emf |
ooxml-emf | OOXML EMF part: xl/media/image304.emf | 1344 bytes |
SHA-256: 542c61cbd6ac23d0e4930d08dbc082ed89fcb78628f30e81e424da9382b03a68 |
|||
emf_15.emf |
ooxml-emf | OOXML EMF part: xl/media/image312.emf | 1328 bytes |
SHA-256: f61e0a347a7758eae32b5599b54f2bec1201a4d606508622bcad0c7d5ea38452 |
|||
emf_16.emf |
ooxml-emf | OOXML EMF part: xl/media/image313.emf | 1344 bytes |
SHA-256: 452cc93d6b60ab91725fa7280557c625f78a700bdad2becfac59a4d7567172a6 |
|||
emf_17.emf |
ooxml-emf | OOXML EMF part: xl/media/image314.emf | 1328 bytes |
SHA-256: b55c85a6732dd6503c78dc0aabd0cd2f3691f8913ee1b391094f4fbf2fab2704 |
|||
emf_18.emf |
ooxml-emf | OOXML EMF part: xl/media/image315.emf | 1344 bytes |
SHA-256: 1d30125dfd22f92dcf28080501b6d2f6cb74998aa577dfa7028fafb2d2514f32 |
|||
emf_19.emf |
ooxml-emf | OOXML EMF part: xl/media/image311.emf | 1328 bytes |
SHA-256: d3eb761a1e36e08a7fc2e6e2ed0c97a9ee482f9188c5c17c9173f1f80e3d8c26 |
|||
emf_20.emf |
ooxml-emf | OOXML EMF part: xl/media/image310.emf | 1352 bytes |
SHA-256: a8159f6c0821a3ca3e36ad802f45b7a03aab871ff86becbff9b5dc0fcad27a0f |
|||
emf_21.emf |
ooxml-emf | OOXML EMF part: xl/media/image309.emf | 1328 bytes |
SHA-256: c2a93d63385643c32a3385ca93a990c1b6e9b7871cb950c68a81a06a5a20efa2 |
|||
emf_22.emf |
ooxml-emf | OOXML EMF part: xl/media/image305.emf | 1352 bytes |
SHA-256: 70cc941642858a2ee26b0bf32347307bdbfb31177ba2da9293245d93be9e3cef |
|||
emf_23.emf |
ooxml-emf | OOXML EMF part: xl/media/image306.emf | 1352 bytes |
SHA-256: c469e296fe612e1bbd73a13bdcc46213ef40f8ddaaf1b1a897ff8667295e96aa |
|||
emf_24.emf |
ooxml-emf | OOXML EMF part: xl/media/image307.emf | 1344 bytes |
SHA-256: 64893e4813d85408f1a1a5273dfd28bdfb4cf10329534d8868fa3e0bb2737250 |
|||
emf_25.emf |
ooxml-emf | OOXML EMF part: xl/media/image308.emf | 1352 bytes |
SHA-256: 147e6b193080ec5642cfc9a800aadafc65f4c5890d02d5849c1fe788695a8327 |
|||
emf_26.emf |
ooxml-emf | OOXML EMF part: xl/media/image289.emf | 1352 bytes |
SHA-256: f5f3fc17509023081272f8cdb1bdce88cbfccc016a069a0235546320f27732f5 |
|||
emf_27.emf |
ooxml-emf | OOXML EMF part: xl/media/image288.emf | 1344 bytes |
SHA-256: 5f4035ffcf6d89bd3c7125cc3fb1ff49c88ebf0d38f823a5b602c486f5e0d103 |
|||
Open this report in the interactive analyzer, or submit your own file for analysis.