Ir ao conteúdo

Como criar banco de dados Access com VBA no Excel?


ArmandPer

Posts recomendados

Postado

Caros colegas, bom dia. Gostaria de sabe se é possível criarmos um ou mais bases de dados Access via código com VBA. Sabendo que teremos que definir as tabelas, campos e chave primária, assim como o tipo do campo. No caso, preciso criar apenas campos tipo MEMORANDO com a chave primaria numeração automática. Agradeço a ajuda. ;)

Postado

Bom dia Pessoal!

Dei uma cavocada por aí, e consegui finalmente criar um Banco de Dados Access com código em VBA, sem precisar usar o Access, legal essa!

Pois bem, vai o módulo que podemos aplicar em qualquer formulário. coloque arquivo Excel (MeuArquivo.xlsm) dentro de uma pasta, antes de mais nada.


Dim daoWK As DAO.Workspace
Dim daoDB As DAO.Database
Public way As String

Sub CriaDatabase()
Dim nb As String
On Error GoTo MyError
nb = FrmDataBases.TxtDatabaseName.Text
way = Workbooks("Criando_databases.xlsm").Path & "\" & nb & ".mdb"

Set daoWK = CreateWorkspace("", "admin", "", dbUseJet)
Set db = daoWK.CreateDatabase(way, dbLangGeneral, dbVersion40)
CriaTabelas
Exit Sub
MyError:
MsgBox "Essa base de dados já existe", vbCritical, "VIOLAÇÃO DE ENTRADA"

End Sub

Sub CriaTabelas()
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim fd As DAO.Field
'---- Abrindo a base de dados ---------------
Set db = OpenDatabase(way)
Set tb = New TableDef
'--- criando os campos ----------------------
'-- Numeração Automática ----------------
Set fd = New DAO.Field
fd.Name = "idcp"
fd.Type = dbLong
fd.Attributes = dbAutoIncrField
tb.Fields.Append fd

'-- Campo 1 (cp1) ----------------------
Set fd = New DAO.Field
fd.Name = "cp1"
fd.Type = dbMemo
fd.AllowZeroLength = True
tb.Fields.Append fd

'-- Campo 2 (cp2) ----------------------
Set fd = New DAO.Field
fd.Name = "cp2"
fd.Type = dbMemo
fd.AllowZeroLength = True
tb.Fields.Append fd
'---- Nomeando a tabela ----------------------------------------
tb.Name = "tabcon"
db.TableDefs.Append tb
'--- Apontando a chave primária com um script em SQL -----------
db.Execute "CREATE INDEX PrimaryKey " & _
"ON TABCON (idcp) WITH PRIMARY"
MsgBox "Banco criado", vbInformation, "ATENÇÃO"
End Sub

Pois bem, perceba que no início do módulo tenho uma caixa de texto que chamei de TxtDatabaseName, ela recebe o nome do Banco. Depois temos a variável way que aponta o caminho onde vai ficar o banco, portanto, usando

Path ele vai deixar dentro da pastinha que vocês criaram. O restante com um pouquinho de conhecimento de Banco de Dados, dá para entender...

Valeu Galera !!

Postado
Bom dia Pessoal!

Dei uma cavocada por aí, e consegui finalmente criar um Banco de Dados Access com código em VBA, sem precisar usar o Access, legal essa!

Pois bem, vai o módulo que podemos aplicar em qualquer formulário. coloque arquivo Excel (MeuArquivo.xlsm) dentro de uma pasta, antes de mais nada.


Dim daoWK As DAO.Workspace
Dim daoDB As DAO.Database
Public way As String

Sub CriaDatabase()
Dim nb As String
On Error GoTo MyError
nb = FrmDataBases.TxtDatabaseName.Text
way = Workbooks("Criando_databases.xlsm").Path & "\" & nb & ".mdb"

Set daoWK = CreateWorkspace("", "admin", "", dbUseJet)
Set db = daoWK.CreateDatabase(way, dbLangGeneral, dbVersion40)
CriaTabelas
Exit Sub
MyError:
MsgBox "Essa base de dados já existe", vbCritical, "VIOLAÇÃO DE ENTRADA"

End Sub

Sub CriaTabelas()
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim fd As DAO.Field
'---- Abrindo a base de dados ---------------
Set db = OpenDatabase(way)
Set tb = New TableDef
'--- criando os campos ----------------------
'-- Numeração Automática ----------------
Set fd = New DAO.Field
fd.Name = "idcp"
fd.Type = dbLong
fd.Attributes = dbAutoIncrField
tb.Fields.Append fd

'-- Campo 1 (cp1) ----------------------
Set fd = New DAO.Field
fd.Name = "cp1"
fd.Type = dbMemo
fd.AllowZeroLength = True
tb.Fields.Append fd

'-- Campo 2 (cp2) ----------------------
Set fd = New DAO.Field
fd.Name = "cp2"
fd.Type = dbMemo
fd.AllowZeroLength = True
tb.Fields.Append fd
'---- Nomeando a tabela ----------------------------------------
tb.Name = "tabcon"
db.TableDefs.Append tb
'--- Apontando a chave primária com um script em SQL -----------
db.Execute "CREATE INDEX PrimaryKey " & _
"ON TABCON (idcp) WITH PRIMARY"
MsgBox "Banco criado", vbInformation, "ATENÇÃO"
End Sub

Pois bem, perceba que no início do módulo tenho uma caixa de texto que chamei de TxtDatabaseName, ela recebe o nome do Banco. Depois temos a variável way que aponta o caminho onde vai ficar o banco, portanto, usando

Path ele vai deixar dentro da pastinha que vocês criaram. O restante com um pouquinho de conhecimento de Banco de Dados, dá para entender...

Valeu Galera !!

NOTA IMPORTANTE: não esquecer de referenciar o DAO, da seguinte forma, no editor VBA em Ferramentas --> Referências procure na lista que surge na janela, MICROSOFT DAO 3.6 Objeto Library para poder instanciar as variáveis de objeto.

Abraço a todos. :rolleyes:

  • 4 semanas depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!