Servidor movido, agora as consultas do Excel 2003 não funcionam
Pergunta
Usamos a consulta MS para recuperar dados de vários bancos de dados para criar métricas de gerenciamento (ou seja, no Excel, acesse dados ... importar dados externos ... nova consulta de banco de dados). A consulta e os parâmetros SQL (principalmente a string Conn) são automaticamente armazenados pelo Excel dentro da planilha.
No entanto, movemos recentemente um de nossos bancos de dados para um novo servidor. Como resultado, o Excel nos solicita uma nova conexão ODBC ao tentar atualizar os dados, mas não aceitará os novos valores. Podemos criar novas consultas bem, para que a conexão ODBC seja configurada corretamente, mas não podemos alterar nenhuma dúvida.
Existe uma maneira de alterar programaticamente ou de outra forma o endereço IP nessas configurações? Tentei alterar o arquivo XLS em um editor hexadecimente (os endereços IP são visíveis lá), mas ele diz que a pasta de trabalho está corrompida.
Solução
Se você precisar alterar a sequência de conexões de suas consultas, essa macro a alterará para todas as consultas na pasta de trabalho ativa (você não precisa armazenar o código na pasta de trabalho a ser alterado).
Incluo duas strings de conexão de amostra - um fornece o DSN, um fornece o servidor/banco de dados. Se o seu DSN estiver bem ao criar novas consultas, tente o DSN One First. Ajuste a versão do SQL Server se você usar essa.
Além disso, um possui segurança padrão (UID, PWD) e o outro usa segurança baseada no Windows (conexão confiável). Misture e combine conforme apropriado.
Sub ChangeAddress()
Dim qt As QueryTable
Dim wks As Worksheet
Const strNEW_CONN_DSN As String = "ODBC;DSN=MyDSN;Description=MyDescription;UID=myid;PWD=mypwd;"
Const strNEW_CONN_SQL as String = "Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDB;Trusted_Connection=yes;"
For Each wks In ActiveWorkbook.Worksheets
For Each qt In wks.QueryTables
qt.Connection = strNEW_CONN_DSN
Next qt
Next wks
End Sub