0% acharam este documento útil (0 voto)
82 visualizações2 páginas

Atualização de Path de Tabelas VBA

Esta função VBA atualiza o caminho das tabelas vinculadas de forma programática sem excluir ou incluir tabelas. Define o novo caminho das tabelas e reestabelece a conexão com senha caso o banco de dados back-end esteja protegido. Trata erros como senha incorreta, tabela ou banco de dados não encontrados e retorna mensagem de falha.

Enviado por

JefferLeite
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
82 visualizações2 páginas

Atualização de Path de Tabelas VBA

Esta função VBA atualiza o caminho das tabelas vinculadas de forma programática sem excluir ou incluir tabelas. Define o novo caminho das tabelas e reestabelece a conexão com senha caso o banco de dados back-end esteja protegido. Trata erros como senha incorreta, tabela ou banco de dados não encontrados e retorna mensagem de falha.

Enviado por

JefferLeite
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Código Vba para Definir Path das Tabelas

Vinculadas
Segue a função que atualiza o path das tabelas de forma programática, sem
excluir ou incluir nada, e inclusive com senha do accdb das tabelas caso haja.

Public Function ReLink(strNewPath As String) As Boolean


Dim dbs As Database
Dim tdf As TableDef
Dim intCount As Integer
Dim frmCurrentForm As Form

DoCmd.Hourglass True
On Error GoTo ErrLinkUpExit
' repare que eu criei um form chamado INICIO, que sempre inicia
antes de tudo para checar o link das tabelas...
Forms!inicio.lblMsg.Visible = True 'aqui é um rotulo que vai
exibir o status de todo procedimento
Forms!inicio.cmdok.Visible = False 'aqui é um botão pra dar
seguimento caso tudo esteja ok

Set dbs = CurrentDb

For intCount = 0 To dbs.TableDefs.Count - 1


Set tdf = dbs.TableDefs(intCount)
If tdf.Name = "APP" Then GoTo jump 'essa condição voce pode usar
para bypassar tabelas que não são linkadas ou de outro link
separado que você não quer checar
If tdf.Connect <> "" Then
Forms!inicio.lblMsg.Caption = "Conectando Tabela " & tdf.Name &
"..."
DoEvents
tdf.Connect = "MS Access;PWD=senhaDoAccdb;DATABASE=" &
strNewPath & "\bd.accdb" 'aqui você coloca o nome do arquivo do seu
back end
tdf.RefreshLink
End If ' tdf.Connect <> ""
jump:
Next intCount

Set dbs = Nothing


Set tdf = Nothing

DoCmd.Hourglass False
Forms!inicio.lblMsg.Caption = "Conexão com o Banco de Dados
realizada!"

ReLink = True
Forms!inicio.cmdok.Visible = True
Exit Function

ErrLinkUpExit:
DoCmd.Hourglass False

Select Case Err


Case 3031 ' Password Protected
Forms!inicio.lblMsg.Caption = "Falha: Banco de Dados protegido com
senha diferente! Provavelmente o caminho indicado contém uma versão
incompatível do Banco de Dados."
Case 3011 ' Table missing
DoCmd.Hourglass False
Forms!inicio.lblMsg.Caption = "Falha: O caminho especificado não
possui a tabela '" & tdf.SourceTableName & "'"
Case 3024 ' Back End not found
Forms!inicio.lblMsg.Caption = "Falha: Banco de Dados não
encontrado!"
Case 3051 ' Access Denied
Forms!inicio.lblMsg.Caption = "Falha: Acesso negado!"
Case 3027 ' Read Only
Forms!inicio.lblMsg.Caption = "Falha: Banco de Dados em '" &
strNewPath & "'" & " é somente leitura!"
Case 3044 ' Invalid Path
Forms!inicio.lblMsg.Caption = "Falha: " & strNewPath & " não é um
caminho válido!"
Case 3265
Forms!inicio.lblMsg.Caption = "Tabela '" & tdf.Name & "'" & _
" não encontrada em ' " & strNewPath & "'"
Case 3321 ' Nothing Entered
Forms!inicio.lblMsg.Caption = "Falha: Falta o nome do Banco de
Dados"
Case Else
Forms!inicio.lblMsg.Caption = "Erro:" & str(Err) & Err.Description
End Select

Set tdf = Nothing


ReLink = False

End Function

Você também pode gostar