Me gustaría poder controlar los módulos VBA de mi hoja de cálculo Excel (actualmente usando Excel 2003 SP3) para poder compartir y administrar el código utilizado por varias hojas de cálculo diferentes - y por lo tanto, me gustaría volver a cargarlos desde los archivos cuando se abre la hoja de cálculo.Control de fuente de módulos de código Excel VBA
Tengo un módulo llamado Loader.bas, que utilizo para hacer la mayoría del trabajo de burro (cargando y descargando cualquier otro módulo que se requiera) - y me gustaría poder cargarlo desde un archivo tan pronto como se abre la hoja de cálculo.
He adjuntado el siguiente código al evento Workbook_Open (en la clase ThisWorkbook).
Private Sub Workbook_Open()
Call RemoveLoader
Call LoadLoader
End Sub
Dónde RemoveLoader (también dentro de la clase ThisWorkbook) contiene el siguiente código:
Private Sub RemoveLoader()
Dim y As Integer
Dim OldModules, NumModules As Integer
Dim CompName As String
With ThisWorkbook.VBProject
NumModules = ThisWorkbook.VBProject.VBComponents.Count
y = 1
While y <= NumModules
If .VBComponents.Item(y).Type = 1 Then
CompName = .VBComponents.Item(y).Name
If VBA.Strings.InStr(CompName, "Loader") > 0 Then
OldModules = ThisWorkbook.VBProject.VBComponents.Count
.VBComponents.Remove .VBComponents(CompName)
NumModules = ThisWorkbook.VBProject.VBComponents.Count
If OldModules - NumModules = 1 Then
y = 1
Else
MsgBox ("Failed to remove " & CompName & " module from VBA project")
End If
End If
End If
y = y + 1
Wend
End With
End Sub
que es probablemente un poco demasiado complicado y un poco crudo - pero estoy tratando de encontrar todo lo que puede conseguirlo para cargar el módulo externo!
A menudo, cuando abro la hoja de cálculo, la función RemoveLoader encuentra que hay un módulo "Loader1" ya incluido en el proyecto VBA que no puede eliminar, y tampoco carga el nuevo módulo Loader del archivo.
Alguna idea si lo que intento hacer es posible? Excel parece muy aficionado a agregar un 1 a estos nombres de módulo, ya sea al cargar o eliminar (no estoy seguro de cuál).
Olvidé agregar que pensé un poco y se me ocurrió esto: http://grumpyop.wordpress.com/2009/04/20/version-control-for-excel-workbooks-part-2/ Nota que también hay algo llamado VBAMaven mencionado en los comentarios que se parece a algún servicio externo que podría ayudar. –