Font Size

Profile

Menu Style

Cpanel

28Maio2017

MS Office Gurus

Onde os desenvolvedores Office se encontram

  • Criar conta
    *
    *
    *
    *
    *
    *

    Campos marcados com asterisco (*) são obrigatórios.

Você está aqui: Home Artigos Microsoft Office Access Como criar um banco de dados Access usando VBA
Mensagem
  • Kunena is not installed or the installed Kunena version is not supported. The plug-in has now been disabled. Please install/upgrade Kunena to version 1.7 for the Kunena Discuss Plug-in to function properly.

Como criar um banco de dados Access usando VBA

Recentemente tive razão para criar um banco de dados via programação, caso ele não existisse. Como a solução me levou algumas tentativas e erro e alguma pesquisa (e, em seguida, mais tentativa e erro), eu decidi compartilhar o método para fazer isso. A rotina a seguir criará um banco de dados a partir de qualquer aplicativo com VBA, tais como Word, Excel, Outlook, etc .

Sobre o Exemplo: O exemplo a seguir cria um banco de dados na raiz do drive C:, usando seu Nome de Usuário do MS Office. Ele também cria uma nova tabela "tblSample" com seis campos nele. A parte mais interessante sobre isso é que o código abaixo, na verdade, gira em torno da configuração de compactação Unicode. Por que isso é importante?

Com Compressão Unicode desligado, o Access pad todas as entradas de campo com espaços à direita do número máximo de caracteres no campo. Isso economiza espaço no banco de dados, uma vez que esses espaços não são armazenados. Sem compressão Unicode ativado, você provavelmente precisará Trim (remover espaços) de todos os valores de campo que trabalham com no código.

Compressão Unicode é, por padrão, ativada quando você criar uma tabela através da interface do usuário no Access. É desativado por padrão, porém, quando você cria uma tabela usando a instrução SQL de CREATE TABLE. A "With Compression" (ou "Com Comp") permite a configuração de compressão Unicode em campos de seu banco de dados. O que eu achei realmente interessante sobre essa bandeira, porém, é que ele só funciona quando você envia sua declaração SQL a partir de uma conexão ADO. Eu prefiro testar todos os meus SQL através da interface do usuário de acesso antes que eu puxe-o em código VBA, então isso realmente me jogou para um laço por um bom tempo.


Código necessário: O código abaixo vai em um módulo padrão. Não se esqueça de definir uma referência para o Microsoft ActiveX Data Objects Library. O código a seguir foi desenvolvido usando a versão 2.8.


NOTA: Não há manipulação de erro nessa rotina. Executá-lo mais de uma vez irá resultar em um erro sobre a base de dados já está sendo criado.

Private Sub CreateDatabase()
'Author       : Ken Puls (www.excelguru.ca)
'Macro Purpose: Create an Access database on the fly
    Dim dbConnectStr As String
    Dim Catalog As Object
    Dim cnt As ADODB.Connection
    Dim dbPath As String
    'Set database name here
    dbPath = "C:\" & Application.UserName & ".mdb"
    dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";"
    'Create new database
    Set Catalog = CreateObject("ADOX.Catalog")
    Catalog.Create dbConnectStr
    Set Catalog = Nothing
    'Connect to database and insert a new table
    Set cnt = New ADODB.Connection
    With cnt
        .Open dbConnectStr
        .Execute "CREATE TABLE tblSample ([Name] text(50) WITH Compression, " & _
                 "[Address] text(150) WITH Compression, " & _
                 "[City] text(50) WITH Compression, " & _
                 "[ProvinceState] text(2) WITH Compression, " & _
                 "[Postal] text(6) WITH Compression, " & _
                 "[Account] decimal(6))"
    End With
    Set cnt = Nothing
End Sub

Este artigo foi sindicalizado com a permissão de Ken Puls de www.excelguru.ca
A versão original (escrito em inglês) é disponível em: Access Database on the fly