As tabelas vinculadas podem ser extraordinariamente úteis (embora não o tempo todo, é claro) – especialmente quando você está lidando com informações externas que mudam regularmente. Um exemplo típico pode ser quando um fornecedor fornece acesso ao arquivo de preços mensal atual. Mas o que acontecerá quando eles emitirem o arquivo no próximo mês e o nome do arquivo mudar de “Pricelist-01-01-2016” para “Pricelist-01-02-2016”? A primeira coisa que acontecerá é que seu link quebrará, então você terá que atualizá-lo manualmente. Toda vez que eles mudam o nome do arquivo. Isso também vale para nomes de tabelas (claro!). Existe uma maneira de fazer isso de forma rápida e fácil, você pergunta? Estamos felizes por você ter perguntado – continue lendo e descubra como…
Montando a cena – o cenário
Neste artigo, vou usar um cenário fictício – mas tenho certeza que você reconhecerá rapidamente!
Todos os meses, a Acme trading nos envia uma lista de preços atualizada para todos os consumíveis usados em DataNumen. Para que saibamos quanto gastaremos com material de escritório a cada mês, vinculamos esse arquivo em nosso banco de dados de gerenciamento de escritório.
O problema é que, embora o formato do arquivo permaneça o mesmo, o nome do arquivo muda todos os meses. No mês passado estava “parado costs Jan 2017.xls”, este mês é “estacionário costs fev 2017.xls”.
Não é uma grande mudança, tenho certeza que você concordará, mas a menos que tenhamos o trabalho de renomear o arquivo manualmente (depois de movermos o arquivo antigo para fora do caminho ou deletá-lo) ou passarmos pelo processo de revinculando a tabela por meio do gerenciador de tabelas vinculadas no Access.
Como não queríamos fazer isso, criamos o seguinte código para fazer isso – muito mais fácil, tenho certeza que você verá:
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'formato da string de conexão em nosso caso, por exemplo, é: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=Nome do arquivo incluindo caminho e tipo de extensão newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
Explicando o código
Como você pode ver, passamos o nome da tabela (vinculada), junto com o nome do novo arquivo ao qual a tabela deve ser vinculada. O nome do arquivo deve incluir o caminho completo para o arquivo. Uma área potencial com a qual você pode lutar no start está obtendo o formato correto para a cadeia de conexão para colocar na variável “newConnect”. Embora existam muitas fontes para descobrir o formato correto, uma das mais fáceis que encontrei é simplesmente examinar a string de conexão da tabela vinculada atual. Para fazer isso, basta adicionar a seguinte linha diretamente abaixo da linha “Set objTableDef = objDB.TableDefs(tableName)”:
Debug.Print (objTableDef.Connect)
Isso imprimirá a cadeia de conexão existente na janela de depuração/imediata do editor de código (se ainda não estiver visível, pressione CTRL-G na tela do editor de código VBA para alternar a visibilidade da janela Imediata antes de executar o código.
Um aviso
Como sempre, não se esqueça de que, embora o trecho de código acima possa ajudá-lo a economizar tempo quando precisar alterar o arquivo ao qual uma tabela está vinculada, o que ele não pode fazer é ajudá-lo se você encontrar algum Acessar danos ao arquivo, portanto, certifique-se de manter backups e saber onde recorrer se tudo mais falhar.
Introdução do autor:
Mitchell Pond é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo reparar danos SQL e produtos de software de recuperação do Excel. Para mais informações visite www.datanumen.com
Deixe um comentário