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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top