This code was downloaded from MOBZystems, Home of Tools. No license, use at will. And at your own risk!
Imports System.IO
Imports System.Text
  
Module MainModule
  
  Const ExeName As String = "ExportDbInfo"
  Const DefaultSourceFileName As String = "DbInfo.vb"
  
  
  ''' <summary>
  ''' Export the structure of an Access database to a VB.NET source file
  ''' 
  ''' Usage: ExportDbInfo database-file-name [source-file-name]
  ''' 
  ''' Args(0) is Access database name
  ''' Args(1) is VB.NET source file name (optional)
  ''' </summary>
  ''' <returns>0 if OK, 1 if error(s)</returns>
  Function Main(ByVal Args() As String) As Integer
    If Args.Length > 0 Then
      Dim DatabaseName As String = Args(0)
  
      Dim SourcefileName As String = DefaultSourceFileName
      If Args.Length > 1 Then
        SourcefileName = Args(1)
      End If
  
      If Args.Length > 2 Then
        ErrorMessage("Too many arguments")
        Return 1
      End If
  
      Try
        Return ExportDBStructure(DatabaseName, SourcefileName)
      Catch Ex As ApplicationException
        Console.Error.WriteLine(ExeName + ": " + Ex.Message)
        Return 1
      Catch Ex As Exception
        Console.Error.WriteLine(ExeName + ": Unexpected error: " + Ex.Message)
        Return 1
      End Try
    Else
      ErrorMessage("No arguments specified")
      Return 1
    End If
  End Function
  
  ''' <summary>
  ''' Print an error message to Console.Error, then report usage instructions
  ''' </summary>
  Private Sub ErrorMessage(ByVal Message As String)
    Console.Error.WriteLine( _
      ExeName + " v" + _
      My.Application.Info.Version.Major.ToString() + "." + _
      My.Application.Info.Version.Minor.ToString() + "." + _
      My.Application.Info.Version.Build.ToString() + _
      ": " + Message _
    )
    Console.Error.WriteLine()
    Console.Error.WriteLine("Usage:")
    Console.Error.WriteLine()
    Console.Error.WriteLine(ExeName + " database-name [source-file-name]")
    Console.Error.WriteLine()
    Console.Error.WriteLine("Writes table and column names of the specified Access database")
    Console.Error.WriteLine("to the specified VB.NET source file.")
    Console.Error.WriteLine("Default source file name is " + DefaultSourceFileName + " in the working directory.")
    Console.Error.WriteLine()
  End Sub
  
  ''' <summary>
  ''' Do the actual work: export the source file
  ''' </summary>
  ''' <param name="DatabaseName">File name of an Access database</param>
  ''' <param name="SourceFileName">Name of the VB.NET source file</param>
  Private Function ExportDBStructure(ByVal DatabaseName As String, ByVal SourceFileName As String) As Integer
    ' Set up an Access connection string
    Dim ConnectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", DatabaseName)
  
    ' The schema information for this connection
    Dim SchemaInfo As DbSchemaInfo
  
    Using Connection As New OleDb.OleDbConnection(ConnectionString)
      Try
        Connection.Open()
        ' Get schema information for the connection
        SchemaInfo = New DbSchemaInfo(Connection)
      Catch Ex As Exception
        Throw New ApplicationException("Failed to open database '" + DatabaseName + "': " + Ex.Message, Ex)
      End Try
  
      Connection.Close()
    End Using
  
    Dim ErrorCount As Integer = 0
  
    ' First check validity of table and column names
    ' Report any errors to Console.Error
    For Each TableInfo As DbSchemaInfo.DbSchemaTableInfo In SchemaInfo.Tables
      Dim TableName As String = TableInfo.TableName
  
      If TableName.Contains(" ") Then
        Console.Error.WriteLine("Table name '{0}' contains spaces", TableName)
        ErrorCount += 1
      End If
      ' Create public shared constants for each column
      For Each ColumnName As String In TableInfo.ColumnNames
        If ColumnName.Contains(" ") Then
          Console.Error.WriteLine("Table '{0}': column name '{1}' contains spaces", TableName, ColumnName)
          ErrorCount += 1
        End If
      Next ColumnName
  
    Next TableInfo
  
    ' Abort here if we have errors:
    If ErrorCount > 0 Then
      Console.Error.WriteLine(String.Format("{0} Error(s)", ErrorCount))
      Return 1 ' Signal error
    Else
      ' Write all output to this string builder
      Dim Output As New StringBuilder
  
      ' Write out a header
      Dim N As DateTime = DateTime.Now
  
      Output.AppendLine("Imports System.ComponentModel")
      Output.AppendLine()
  
      Output.AppendLine("''' <summary>")
      Output.AppendLine("''' Generated by " + ExeName + " at " + N.ToString("yyyy\-MM\-dd HH\:mm\:ss"))
      Output.AppendLine("''' *** DO NOT MODIFY ***")
      Output.AppendLine("''' </summary>")
  
      ' Set up a class definition. Derive class name from file name
      Dim ClassName As String = Path.GetFileNameWithoutExtension(SourceFileName)
  
      Output.AppendLine("Public Class " + ClassName)
  
      ' Loop over tables to create class definitions for each
      For Each TableInfo As DbSchemaInfo.DbSchemaTableInfo In SchemaInfo.Tables
        Dim TableName As String = TableInfo.TableName
  
        ' Write out a class definition for the table
        Output.AppendLine(Chr(9) + String.Format("Public Class {0}", TableName))
  
        ' Create public shared constants for each column
        For Each ColumnName As String In TableInfo.ColumnNames
          Output.AppendLine(Chr(9) + Chr(9) + String.Format("Public Const {1} As String = ""{1}""", TableName, ColumnName))
        Next ColumnName
  
        Output.AppendLine(Chr(9) + String.Format("End Class ' {0}", TableName))
  
        Output.AppendLine()
  
      Next TableInfo
  
      ' Write out a shared member for each table
      For Each TableInfo As DbSchemaInfo.DbSchemaTableInfo In SchemaInfo.Tables
        Output.AppendLine(Chr(9) + String.Format("Public Const {0}Table As String = ""{0}""", TableInfo.TableName))
      Next TableInfo
  
      ' End outer class
      Output.AppendLine(String.Format("End Class ' {0}", ClassName))
  
      Try
        ' Write it all out to the specified source file
        File.WriteAllText(SourceFileName, Output.ToString())
      Catch Ex As Exception
        Throw New ApplicationException("Failed to write to source file '" + SourceFileName + "': " + Ex.Message, Ex)
      End Try
  
      Console.WriteLine(ExeName + ": Database '" + DatabaseName + "' sucessfully exported to '" + SourceFileName + "'.")
      Return 0 ' No error
    End If
  End Function
End Module