Como criar um banco de dados Access usando VBA
- Última atualização em 17 Fevereiro 2012
- Acessos: 824
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


afrikaans
albanian
arabic
belarusian
bulgarian
catalan
chinese
chinese simplified
chinese traditional
croatian
czech
danish
dutch
english
estonian
finnish
french
galician
german
greek
hebrew
hindi
hungarian
icelandic
indonesian
irish
italian
japanese
korean
latvian
lithuanian
macedonian
malay
maltese
norwegian
persian
polish
portuguese
romanian
russian
serbian
slovak
slovenian
spanish
swahili
swedish
tagalog
thai
turkish
ukrainian
vietnamese
welsh
yiddish