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