Autor Tema: Extraer código  (Leído 2106 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 204
Extraer código
« en: Abril 13, 2012, 10:02:05 pm »
Palabras clave: Extraer, exportar, código, fuente
Autor: Juan M. Afán de Ribera
Extraído de: La web del Búho

Objetivo:
Extraer en un fichero de texto, todo el código inmerso en una MDB.

Citar
Dice el Búho...

En apenas 8 líneas de código, el Maestro y ciertamente Gurú de Access, mi amigo Juan, es capaz de hacerlo.
Te presento recién salido de su laboratorio mágico, dicho código...aún sin depurar mucho (Estoy seguro que muy pronto lo pondrá en su WEB y yo te pondré aquí el enlace definitivo a dicha Web.
Pero mientras tanto, para ir entrando en calor...prueba el siguiente procedimiento que ahora te indico.

Para Access 2000 o superior.


Código: [Seleccionar]
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvba@ya.com (Nota de Xavi: OBSOLETO)
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
'Con este código pondrás en un santiamén todo el código de una base de datos en un fichero TXT, con el nombre del proyecto como nombre del fichero, y separado por nombres de módulos:

Sub exportarCodigo()
Dim obj As Object
Dim archivo As String
Dim titulo As String

    archivo = CurrentProject.Path & "\" & Application.VBE.ActiveVBProject.Name & ".txt"
    Open archivo For Append As #1
    titulo = "Código del proyecto: " & UCase(Application.VBE.ActiveVBProject.Name)
    Print #1, titulo
    Print #1, String(Len(titulo), "-")
    Print #1, vbCrLf & vbCrLf
    For Each obj In Application.VBE.ActiveVBProject.VBComponents
        Print #1, UCase(obj.Name)
        Print #1, String(Len(obj.Name), "-")
        Print #1, vbCrLf & vbCrLf
        Print #1, obj.CodeModule.Lines(1, obj.CodeModule.CountOfLines)
        Print #1, vbCrLf & vbCrLf
    Next
    Close #1
   
End Sub

Y de una Base externa:

Sub exportarCodigoB()
Dim obj As Object
Dim archivo As String
Dim titulo As String
Dim ObjetoAccessExterno As Object ' Access.Application
Set ObjetoAccessExterno = CreateObject("Access.Application")
ObjetoAccessExterno.OpenCurrentDatabase CurrentProject.Path & "\baseexterna.mdb"
    archivo = CurrentProject.Path & "\" & Application.VBE.ActiveVBProject.Name & ".txt"
    Open archivo For Append As #1
    titulo = "Código del proyecto: " & UCase(Application.VBE.ActiveVBProject.Name)
    Print #1, titulo
    Print #1, String(Len(titulo), "-")
    Print #1, vbCrLf & vbCrLf
    For Each obj In ObjetoAccessExterno.Application.VBE.ActiveVBProject.VBComponents
        Print #1, UCase(obj.Name)
        Print #1, String(Len(obj.Name), "-")
        Print #1, vbCrLf & vbCrLf
        Print #1, obj.CodeModule.Lines(1, obj.CodeModule.CountOfLines)
        Print #1, vbCrLf & vbCrLf
    Next
    Close #1
    ObjetoAccessExterno.Quit
   
End Sub

« Última modificación: Abril 13, 2012, 11:28:01 pm por xavi »