-
Notifications
You must be signed in to change notification settings - Fork 0
/
exim.bas
186 lines (163 loc) · 6.6 KB
/
exim.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Attribute VB_Name = "exim"
Option Explicit
Option Compare Text
Option Base 0
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
Private Function EntryPointModulesDelete() As Boolean
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
'Constants
Const cstrMethodName As String = "exim.EntryPointModulesDelete "
'Here we delete the modules we
End Function
Private Function EntryPointModulesExport() As Boolean
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
'Constants
Const cstrMethodName As String = "exim.EntryPointModulesExport "
'Variables
Dim lngNumberOfExportableModules As Long
Dim lngExportedModuleCount As Long
Dim oWorkbook As Excel.Workbook
Dim oCom As VBIDE.VBComponent
Dim strTargetFileName As String
Set oWorkbook = ThisWorkbook
lngNumberOfExportableModules = GetExportableComponentCount(oWorkbook)
'Why? Simple, so we can later on replace this method with no parameters with an updated version that
'allows the user to set the workbook on which to perform this operation...
For Each oCom In oWorkbook.VBProject.VBComponents
strTargetFileName = ""
If GetValidSaveAsNameAndPath(oWorkbook, oCom, strTargetFileName) Then
oCom.Export strTargetFileName
Debug.Print (cstrMethodName & "exported " & oCom.Name & " to " & strTargetFileName)
lngExportedModuleCount = lngExportedModuleCount + 1
End If
Next
Debug.Print (cstrMethodName & "exportable=" & lngNumberOfExportableModules & " exported=" & lngExportedModuleCount)
End Function
Private Function GetExportableComponentCount(TargetWorkbook As Excel.Workbook) As Long
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
'Constants
Const cstrMethodName As String = "exim.GetExportableComponentCount "
'Variables
Dim lngIncrementalCount As Long
Dim lngTotal As Long
Dim oCom As VBIDE.VBComponent
Dim blnTest As Boolean
Dim strExtension As String
lngTotal = 0
For Each oCom In TargetWorkbook.VBProject.VBComponents
strExtension = ""
CanExportDelete oCom, strExtension, False
If Len(strExtension) > 0 Then
lngTotal = lngTotal + 1
End If
Next
GetExportableComponentCount = lngTotal
End Function
Private Function CanExportDelete(TargetComponent As VBIDE.VBComponent, ExportExtension As String, CanDelete As Boolean) As Boolean
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
'Constants
Const cstrMethodName As String = "exim.CanExportDelete "
ExportExtension = ""
CanDelete = False
CanExportDelete = False
Select Case TargetComponent.Type
Case VBIDE.vbext_ComponentType.vbext_ct_ActiveXDesigner
ExportExtension = ""
Case VBIDE.vbext_ComponentType.vbext_ct_Document
ExportExtension = ""
Case VBIDE.vbext_ComponentType.vbext_ct_ClassModule
ExportExtension = "cls"
Case VBIDE.vbext_ComponentType.vbext_ct_MSForm
ExportExtension = "frm"
Case VBIDE.vbext_ComponentType.vbext_ct_StdModule
ExportExtension = "bas"
Case Else
ExportExtension = ""
End Select
End Function
Private Function GetValidSaveAsNameAndPath(TargetWorkbook As Excel.Workbook, TargetComponent As VBIDE.VBComponent, ReturnString As String) As Boolean
'============================================================================================================================
'
'
' Author : John Greenan
' Email :
' Company : Alignment Systems Limited
' Date : 24th March 2015
'
' Purpose : Matching Engine in Excel VBA for Alignment Systems Limited
'
' References : See VB Module FL for list extracted from VBE
' References :
'============================================================================================================================
'Constants
Const cstrMethodName As String = "exim.GetValidSaveAsNameAndPath "
Dim strExtension As String
CanExportDelete TargetComponent, strExtension, False
If Len(strExtension) = 0 Then
GetValidSaveAsNameAndPath = False
Else
' By default we will use the location of this workbook...
ReturnString = TargetWorkbook.Path & "\" & TargetComponent.Name & "." & strExtension
GetValidSaveAsNameAndPath = True
End If
End Function