Convertir un MDB de Access a Texto

Publicado el 02 mayo 2011 por Alexborras @alexborras

Esta es una pequeña utilidad desarrollada con Visual Basic que permite convertir a un fichero de texto una base de datos de Microsoft Access. El proceso crea una subcarpeta donde están las bases de datos y en la misma crea un fichero por cada una de la tablas del MDB. En principio se crean en formato csv pero modificando el parámetro de esta instrucción es posible obtener la información en otros formatos como acFormatActiveXServer, acFormatHTML, acFormatIIS, acFormatRTF, acFormatTXT, acFormatXLS:

PLAIN TEXT Visual Basic: app.DoCmd.OutputTo acOutputTable, tdf.Name,acFormatTXT, strFolderOutput & "\" & tdf.Name & ".txt"

Hay dos métodos posibles para la exportación el DoCmd.TransferText y el DoCmd.OutputTo, se pueden utilizar cualquiera de los dos.

Aquí está el archivo para descargar y debajo el código del formulario (también hay un módulo en el proyecto con 2 funciones complementarias.

MDB2txt

Código del formulario:

PLAIN TEXT Visual Basic: Option Explicit
    Dim app  As Access.Application
    Dim dbs  As DAO.Database
    Dim tdf  As DAO.TableDef
    Dim strMDB2txt  As String
    Dim strSQL      As String
    Dim strFolderOutput As String
    Dim fso         As FileSystemObject

Private Sub Form_Load()
    'Me.Width = 6500
    'Me.Height = 3300
End Sub
Private Sub cmdMDB2txt_Click()
    cdgMDB2txt.DefaultExt = "mdb"
    cdgMDB2txt.ShowOpen
    strMDB2txt = ValidarString(cdgMDB2txt.FileName)
    If strMDB2txt <> "" Then
        txtMDB2txt = strMDB2txt
      Else
        txtMDB2txt = ""
    End If
End Sub
Private Sub cmdCancelar_Click()
    Unload Me
End Sub
Private Sub cmdConvertir_Click()
' Inicio de Proceso
    lblMDB2txt.Caption = "Iniciando proceso ..."
    Set app = New Access.Application
    app.OpenCurrentDatabase strMDB2txt
    Set fso = New FileSystemObject
    Set dbs = OpenDatabase(strMDB2txt)
    strFolderOutput = ArchivoInformacion(strMDB2txt, itxpath) & "\" & Mid(Dir(strMDB2txt), 1, (Len(Dir(strMDB2txt)) - 4))
    If fso.FolderExists(strFolderOutput) = False Then
        fso.CreateFolder strFolderOutput
    End If
' Procesar las Tablas
    For Each tdf In dbs.TableDefs
        GoSub ExportarTabla
    Next
' Cerrar Bases de Datos
    dbs.Close
    Set app = Nothing
    Set fso = Nothing
' Fin de Proceso
    MsgBox "Proceso Finalizado", vbInformation, "Convertir MDB a Texto"
    txtMDB2txt = ""
    lblMDB2txt.Caption = ""
    Exit Sub
ExportarTabla:
    If tdf.Attributes = dbAttachedTable Then Return
    If LCase(Left(tdf.Name, 4)) = "msys" Then Return
    lblMDB2txt.Caption = "Convirtiendo " & tdf.Name
    app.DoCmd.TransferText acExportDelim, "", tdf.Name, strFolderOutput & "\" & tdf.Name & ".csv"
    'app.DoCmd.OutputTo acOutputTable, tdf.Name,acFormatTXT, strFolderOutput & "\" & tdf.Name & ".txt"
    Me.Refresh
    Return
End Sub