Você está na página 1de 2

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