Como extraer todo el codigo VBA de una aplicación Access

migracion_access_sql_server-(1)
Estándar

En mas de una ocasión los que trabajamos con Access nos hemos tenido que remangar para tratar de migrar una aplicación Access con VBA a un sistema mejor, como puede ser .NET.

Para ello existen ciertas herramientas (de las cuales todavía no he encontrado ninguna que funcione) en internet, pero sin duda la manera “manual” siempre existe y muchas veces es la indicada para hacer este tipo de operaciones. Lo peliagudo del asunto es extraer todo el código de la aplicación, que en mi caso y dado que prácticamente es un ERP es bastante extenso y con muchos formularios.

Para ello tenemos esta maravillosa función que nos permitirá extraer el código VBA de cada formulario a archivos txt, que luego podemos a su vez intentar migrar con alguna de las herramientas online que existen en el mercado

Esta función se ejecuta desde otro archivo access o VB, y es necesaria la referencia Microsoft Visual Basic for Applications Extensibility (en mi caso la 5.3) que hay que añadir al proyecto.

Private Sub Comando33_Click()
‘Make sure a root directory was specified
Dim RootDirectory As String
RootDirectory = “ruta donde quiero guardar los txt”

Dim appAccess As New Access.Application
Dim objProj As VBProject
Dim objComponent As VBComponent
Dim intFile As Integer
Dim strModule As String
ExportText = True

Set appAccess = CreateObject(“Access.Application”)
appAccess.OpenCurrentDatabase (“rutademiarchivo.mdb”)

Set objProj = appAccess.VBE.ActiveVBProject

For Each objComponent In objProj.VBComponents

‘Export the modules as *.txt files
If ExportText Then
intFile = FreeFile
Open RootDirectory & “\” & objComponent.Name & “.txt” For Output As #intFile
strModule = objComponent.CodeModule.Lines(1, objComponent.CodeModule.CountOfLines)
Print #intFile, strModule
Close #intFile
End If
Next objComponent
‘Clean up
Set objComponent = Nothing
Set objProj = Nothing
appAccess.CloseCurrentDatabase
Set appAccess = Nothing

End Sub

Si os da algun fallo es posible que este leyendo un report, pasais de linea y seguis con la ejecución

Deja un comentario

Tu dirección de correo electrónico no será publicada.