-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodCALLBACKSRibbon.bas
More file actions
332 lines (281 loc) · 14.2 KB
/
Copy pathmodCALLBACKSRibbon.bas
File metadata and controls
332 lines (281 loc) · 14.2 KB
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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
Attribute VB_Name = "modCALLBACKSRibbon"
' Módulo de integración con la Ribbon: gestiona visibilidad y ejecución de macros para gráficos de sensibilidad
'FIXME: DETECCIÓN Y RECUPERACIÓN DE OBJETOS RIBBON; en ocasiones el ribbon se pierde. Es necesario revisar que lo causa
' Creo que casi siempre tiene que ver con que se desactive el XLAM, o se suspende la ejecución de VBA mediante STOP
'@Folder "2-Servicios.Excel.Ribbon"
'@IgnoreModule ProcedureNotUsed
Option Explicit
Option Private Module
' ==========================================
' CALLBACK: Se llama al cargar el Ribbon
' ==========================================
Sub RibbonOnLoad(xlRibbon As IRibbonUI)
Attribute RibbonOnLoad.VB_ProcData.VB_Invoke_Func = " \n0"
LogInfo "modCALLBACKSRibbon", "[callback: RibbonOnLoad] - Inicio"
On Error GoTo ErrorHandler
' inicializamos la referencia al ribbon en la aplicación
App.RibbonHandler = xlRibbon
LogInfo "modCALLBACKSRibbon", "[callback: RibbonOnLoad] - ribbon cargado en la interfaz de excel"
App.Ribbon.InvalidarRibbon
Exit Sub
ErrorHandler:
LogError "modCALLBACKSRibbon", "[callback: RibbonOnLoad] - Error", , Err.Description
End Sub
' ==========================================
' CALLBACKS DE MACROS
' ==========================================
Sub OnCompararHojas(control As IRibbonControl)
Attribute OnCompararHojas.VB_ProcData.VB_Invoke_Func = " \n0"
MostrarComparador
End Sub
Sub OnDirtyRecalc(control As IRibbonControl)
Attribute OnDirtyRecalc.VB_ProcData.VB_Invoke_Func = " \n0"
AplicarDirtyATodasLasHojasConFormulas
End Sub
Sub OnEvalUDFs(control As IRibbonControl)
Attribute OnEvalUDFs.VB_ProcData.VB_Invoke_Func = " \n0"
ReemplazarUDFsEnFormulas
End Sub
Public Sub OnChangeAlturaFilas(control As IRibbonControl)
Attribute OnChangeAlturaFilas.VB_ProcData.VB_Invoke_Func = " \n0"
LogInfo "modCALLBACKSRibbon", "[callback: OnChangeAlturaFilas]"
On Error GoTo Finalizar
Call AjustarAltoFilasSegunColor
Finalizar:
End Sub
Public Sub OnMakeEditableBook(control As IRibbonControl)
Attribute OnMakeEditableBook.VB_ProcData.VB_Invoke_Func = " \n0"
Call modMACROWbkEditableCleaning.LimpiarLibroActual
End Sub
Public Sub OnFitForPrint(control As IRibbonControl)
Attribute OnFitForPrint.VB_ProcData.VB_Invoke_Func = " \n0"
Call modMACROWbkEditableFormatting.AjustarSelWSheetsParaImpresionPDF
End Sub
Public Sub OnVBAExport(control As IRibbonControl)
Attribute OnVBAExport.VB_ProcData.VB_Invoke_Func = " \n0"
Call modMACROImportExportMacros.ExportarComponentesVBA
End Sub
Public Sub OnVBAImport(control As IRibbonControl)
Attribute OnVBAImport.VB_ProcData.VB_Invoke_Func = " \n0"
Call modMACROImportExportMacros.ImportarComponentesVBA
End Sub
Public Sub OnOpenLog(control As IRibbonControl)
Attribute OnOpenLog.VB_ProcData.VB_Invoke_Func = " \n0"
Call mod_Logger.AbrirLog
End Sub
Public Sub OnVBABackup(control As IRibbonControl)
Attribute OnVBABackup.VB_ProcData.VB_Invoke_Func = " \n0"
Call CrearBackupCodigoVBA
LogInfo "modCALLBACKSRibbon", "[callback: OnVBABackup] - Creada copia de seguridad del código en " & ThisWorkbook.Path & "\Backups"
MsgBox "Creada copia de seguridad del código en " & _
ThisWorkbook.Path & "\Backups", vbInformation, "Copia de seguridad"
End Sub
Public Sub OnProcMetadataSync(control As IRibbonControl)
Attribute OnProcMetadataSync.VB_ProcData.VB_Invoke_Func = " \n0"
Call modMACROProceduresToWorksheet.WriteProcedimientosSheet_ConBackup
End Sub
Public Sub OnToggleXLAMVisibility(control As IRibbonControl)
Attribute OnToggleXLAMVisibility.VB_ProcData.VB_Invoke_Func = " \n0"
LogInfo "modCALLBACKSRibbon", "[callback: OnToggleXLAMVisibility]"
ThisWorkbook.IsAddin = Not (ThisWorkbook.IsAddin)
End Sub
' ==========================================
' CALLBACKS DE APLICACION
' ==========================================
Public Sub OnGenerarGraficosDesdeCurvasRto(control As IRibbonControl)
Attribute OnGenerarGraficosDesdeCurvasRto.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnGenerarGraficosDesdeCurvasRto
End Sub
Public Sub OnInvertirEjes(control As IRibbonControl)
Attribute OnInvertirEjes.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnInvertirEjes
End Sub
Public Sub OnFormatearCGASING(control As IRibbonControl)
Attribute OnFormatearCGASING.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnFormatearCGASING
End Sub
Public Sub OnNuevaOportunidad(control As IRibbonControl)
Attribute OnNuevaOportunidad.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnNuevaOportunidad
End Sub
Public Sub OnReplaceWithNamesInValidations(control As IRibbonControl)
Attribute OnReplaceWithNamesInValidations.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnReplaceWithNamesInValidations
End Sub
'--------------------------------------------------------------
' CALLBACKS DE CONFIGURACIÓN
'--------------------------------------------------------------
' Callback del botón de configuración
Sub OnConfigurador(control As IRibbonControl)
Attribute OnConfigurador.VB_ProcData.VB_Invoke_Func = " \n0"
App.Ribbon.OnConfigurador
End Sub
'--------------------------------------------------------------
' CALLBACKS DEL DROPDOWN DE OPORTUNIDADES
'--------------------------------------------------------------
'FIXME: revisar la secuencia de eventos con el dropdown / box!!:
' actualmente la sucesión de eventos relacionados con ese drop down no está bien coordinada.
' revisar los eventos OpportunityChanged y su relación con CurrOpportunity y ProcesarCambiosEnOportunidades,
' y el resto de eventos relacionados
'--------------------------------------------------------------
' @Description: Callback del botón de refresco de oportunidades.
' Callback for btnOpRefresh CallbackRefrescarOportunidades
' Refresca el listado de subcarpetas y actualiza el desplegable
' del Ribbon.
'--------------------------------------------------------------
' @Category: Información de archivo
' @ArgumentDescriptions: control: control del Ribbon que dispara el evento
'--------------------------------------------------------------
Public Sub CallbackRefrescarOportunidades(control As IRibbonControl)
Attribute CallbackRefrescarOportunidades.VB_ProcData.VB_Invoke_Func = " \n0"
LogInfo "modCALLBACKSRibbon", "[callback: CallbackRefrescarOportunidades] - control de ribbon activado para actualizar la lista de oportunidades"
App.OpportunitiesMgr.actualizarColeccionOportunidades
App.Ribbon.InvalidarRibbon
'App.Ribbon.InvalidarControl "ddlOportunidades"
End Sub
'--------------------------------------------------------------
' @Description: Devuelve el número de oportunidades disponibles (número de elementos del desplegable).
' Callback for ddlOportunidades getItemCount
'--------------------------------------------------------------
' @Category: Información de archivo
' @ArgumentDescriptions: control: control del Ribbon|getItemCount: valor devuelto
'--------------------------------------------------------------
Sub GetOportunidadesCount(control As IRibbonControl, ByRef returnedVal)
Attribute GetOportunidadesCount.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = App.OpportunitiesMgr.numOpportunities
End Sub
'--------------------------------------------------------------
' @Description: Devuelve la etiqueta de cada oportunidad en el
' desplegable del Ribbon.
' Callback for ddlOportunidades getItemLabel
'--------------------------------------------------------------
' @Category: Información de archivo
' @ArgumentDescriptions: control: control del Ribbon|index: índice (base 0)|label: texto mostrado
'--------------------------------------------------------------
Sub GetOportunidadesLabel(control As IRibbonControl, Index As Integer, ByRef label)
Attribute GetOportunidadesLabel.VB_ProcData.VB_Invoke_Func = " \n0"
label = App.OpportunitiesMgr.OportunityLabel(Index)
End Sub
'--------------------------------------------------------------
' @Description: Gestiona el evento de selección de oportunidad.
' Dispara el evento OpportunityChanged de la clase clsOpportunitiesMgr.
' Callback for ddlOportunidades onAction
'--------------------------------------------------------------
' @Category: Información de archivo
' @ArgumentDescriptions: control: control del Ribbon|id: identificador del control|index: índice seleccionado
'--------------------------------------------------------------
Sub OnOportunidadesSeleccionada(control As IRibbonControl, id As String, Index As Integer)
Attribute OnOportunidadesSeleccionada.VB_ProcData.VB_Invoke_Func = " \n0"
LogInfo "modCALLBACKSRibbon", "[callback: OnOportunidadesSeleccionada] - modificada la oportunidad seleccionada en el control de ribbon"
App.OpportunitiesMgr.CurrOpportunity = Index
' invalidar, refrescar el UI
App.Ribbon.InvalidarControl "ddlOportunidades"
End Sub
'Callback for ddlOportunidades getSelectedItemIndex
' Índice del elemento seleccionado
Sub GetSelectedOportunidadIndex(control As IRibbonControl, ByRef Index)
Attribute GetSelectedOportunidadIndex.VB_ProcData.VB_Invoke_Func = " \n0"
Index = App.OpportunitiesMgr.CurrOpportunity
End Sub
' ==========================================
' CALLBACKS DE SUPERTIPS DINÁMICOS
' ==========================================
Sub GetSupertipRutaBaseOportunidades(control As IRibbonControl, ByRef returnedVal)
Attribute GetSupertipRutaBaseOportunidades.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = GetSupertipRutaBase(App.Configuration.RutaOportunidades)
End Sub
Sub GetSupertipRutaBasePlantillas(control As IRibbonControl, ByRef returnedVal)
Attribute GetSupertipRutaBasePlantillas.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = GetSupertipRutaBase(App.Configuration.RutaPlantillas)
End Sub
Sub GetSupertipRutaBaseOfergas(control As IRibbonControl, ByRef returnedVal)
Attribute GetSupertipRutaBaseOfergas.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = GetSupertipRutaBase(App.Configuration.RutaOfergas)
End Sub
Sub GetSupertipRutaBaseGasVBNet(control As IRibbonControl, ByRef returnedVal)
Attribute GetSupertipRutaBaseGasVBNet.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = GetSupertipRutaBase(App.Configuration.RutaGasVBNet)
End Sub
Sub GetSupertipRutaBaseCalcTmpl(control As IRibbonControl, ByRef returnedVal)
Attribute GetSupertipRutaBaseCalcTmpl.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = GetSupertipRutaBase(App.Configuration.RutaExcelCalcTempl)
End Sub
' Para mostrar la ruta actual en el supertip (dinámico)
Function GetSupertipRutaBase(ByVal strSettingRuta As String)
Attribute GetSupertipRutaBase.VB_ProcData.VB_Invoke_Func = " \n0"
If strSettingRuta = "" Then strSettingRuta = "No configurada"
GetSupertipRutaBase = "Ruta actual: " & strSettingRuta & vbCrLf & "Haz clic para cambiar..."
End Function
' ==========================================
' CALLBACKS GetEnabled (habilitar/deshabilitar controles)
' ==========================================
' Habilita el botón de gráfico si el fichero es válido y cumple condiciones internas
Public Sub GetGraficoEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetGraficoEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = App.Ribbon.GetRibbonControlEnabled(control)
End Sub
' Habilita el botón de inversión de ejes si hay gráfico válido en contexto
Public Sub GetInvertirEjesEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetInvertirEjesEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = App.Ribbon.GetRibbonControlEnabled(control)
End Sub
' Habilita el botón de procesado C-GAS-ING si hoja válida en contexto
Public Sub GetCGASINGEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetCGASINGEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = App.Ribbon.GetRibbonControlEnabled(control)
End Sub
' Habilita el botón de creación de nuevas oportunidades
Public Sub GetNuevaOportunidadEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetNuevaOportunidadEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = App.Ribbon.GetRibbonControlEnabled(control)
End Sub
' Habilita el botón de cumplimentación de oferta FULL si hoja válida en contexto
Public Sub GetOfertaFullEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetOfertaFullEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = True ' EsValidoRellenarOferta()
End Sub
Public Sub GetOpenLogEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetOpenLogEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = GetLogFilePath <> ""
End Sub
' Habilita el botón del menú contextual del Ribbon si el fichero tiene nombre válido
Public Sub GetMenuEnabled(control As IRibbonControl, ByRef enabled)
Attribute GetMenuEnabled.VB_ProcData.VB_Invoke_Func = " \n0"
enabled = EsFicheroOportunidad()
enabled = True
'App.Ribbon.InvalidarRibbon
End Sub
' ==========================================
' CALLBACKS GetLabel (cambia la etiqueta de controles)
' ==========================================
Public Sub GetLabelToggleXLAM(control As IRibbonControl, ByRef returnedVal)
Attribute GetLabelToggleXLAM.VB_ProcData.VB_Invoke_Func = " \n0"
If ThisWorkbook.IsAddin Then
returnedVal = "Mostrar XLAM"
Else
returnedVal = "Ocultar XLAM"
End If
End Sub
Public Sub GetLabelGrpConfiguracion(control As IRibbonControl, ByRef returnedVal)
Attribute GetLabelGrpConfiguracion.VB_ProcData.VB_Invoke_Func = " \n0"
returnedVal = App.RibbonState.RibbonStateDescription
End Sub
' ==========================================
' CALLBACKS getVisible
' ==========================================
'@Description: Callback getVisible de la pestaña "ABC"
Public Sub GetTabABCVisible(control As IRibbonControl, ByRef Visible)
Attribute GetTabABCVisible.VB_ProcData.VB_Invoke_Func = " \n0"
If Not App() Is Nothing Then
Visible = App.RibbonState.IsRibbonTabVisible
Else
Visible = False
End If
End Sub
Public Sub GetGrpDeveloperAdminVisible(control As IRibbonControl, ByRef Visible)
Attribute GetGrpDeveloperAdminVisible.VB_ProcData.VB_Invoke_Func = " \n0"
Visible = False
If Not App() Is Nothing Then
Visible = App.RibbonState.IsAdminGroupVisible
End If
End Sub