Como alterar informações de conexão para uma consulta no Excel

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 816562
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Para uma versão deste artigo do Microsoft Excel 97, consulte 269619.
Sumário
Depois de alterar o local de pasta ou o nome de servidor de um banco de dados que está usando uma consulta ou tabela dinâmica no Microsoft Excel, você não pode alterar manualmente as informações de conexão para a nova pasta ou para o servidor. Este artigo oferece uma solução através de programação.
Mais Informações
Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação para uma finalidade específica. Este artigo presume que você está familiarizados com a linguagem de programação que está sendo demonstrada e com as ferramentas que são usadas para criar e depurar procedimentos. Engenheiros de suporte podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades.

Para usar o seguinte do Microsoft Visual Basic para código de macro do VBA no Excel, execute estas etapas:
  1. Inicie o Excel.
  2. Em uma pasta de trabalho do Excel, pressione ALT+F11 para abrir o Editor do Visual Basic.
  3. No menu Inserir , clique em módulo .
  4. Na nova planilha de código do módulo, digite ou cole o seguinte código de macro:
    Sub QueryChange()     Dim sh As Worksheet, qy As QueryTable     Dim pt As PivotTable, pc As PivotCache     Dim OldPath As String, NewPath As String	     Dim rng As Range          'Replace the following paths with the original path or server name     'where your database resided, and the new path or server name where     'your database now resides.     OldPath =  "C:\OldPath\Folder"     NewPath = "C:\NewPath\Folder"     For Each ws In ActiveWorkbook.Sheets       For Each qy In ws.QueryTables            qy.Connection = _                  Application.Substitute(qy.Connection, _                  OldPath, NewPath)            qy.CommandText = _                  StringToArray(Application.Substitute(qy.CommandText, _                  OldPath, NewPath))            qy.Refresh       Next qy       For Each pt In ws.PivotTables            pt.PivotCache.Connection = _                  Application.Substitute(pt.PivotCache.Connection, _                  OldPath, NewPath)            On Error Resume Next            pt.PivotCache.CommandText = _                  StringToArray(Application.Substitute(pt.PivotCache.CommandText, _                  OldPath, NewPath))            If Err.Number <> 0 Then                Err.Clear                On Error GoTo 0                Application.ScreenUpdating = False                Set rng = pt.TableRange2                pt.TableRange2.Copy Workbooks.Add(xlWorksheet).Worksheets(1) _                           .Range("A1")                ActiveCell.PivotTable.PivotCache.CommandText = _                           StringToArray(Application.Substitute(pt.PivotCache.CommandText, _                           OldPath, NewPath))                ActiveCell.PivotTable.TableRange2.Copy pt.TableRange2                ActiveWorkbook.Close False                Set pt = rng.PivotTable                Application.ScreenUpdating = True            End If            pt.PivotCache.Refresh        Next ptNext wsEnd SubFunction StringToArray(Query As String) As Variant   Const StrLen = 127   Dim NumElems As Integer   Dim Temp() As String   NumElems = (Len(Query) / StrLen) + 1   ReDim Temp(1 To NumElems) As String   For i = 1 To NumElems      Temp(i) = Mid(Query, ((i - 1) * StrLen) + 1, StrLen)   Next i   StringToArray = TempEnd Function
  5. No menu arquivo , clique em Fechar e voltar para Microsoft Excel .
  6. Para salvar as alterações para sua pasta de trabalho do Excel, clique em Salvar no menu arquivo .
Observação O código anterior pode não funcionar conforme o esperado se você estiver usando PivotCaches compartilhada, uma tabelas dinâmicas baseados em OLAP ou uma tabelas dinâmicas com base no intervalo de consolidação de vários para se conectar ao banco de dados.
Mais Informações
Quando DSN é usada para o método de conexão, se uma das seguintes condições é operada pelo administrador de fonte de dados ODBC, é conectável para usar o servidor depois de fazer a alteração.
  • Altere o nome do servidor da fonte de dados correspondente.
  • Excluir a fonte de dados correspondente e, em seguida, mantenha a fonte de dados como o mesmo nome.
Se várias tabelas dinâmicas em uma planilha são derivadas da mesma tabela dinâmica, a sub-rotina não funciona depois que ele processa a tabela dinâmica primeira. Março de 2003, não há nenhuma solução conhecida para esse problema.
XL

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 816562 - Última Revisão: 12/08/2015 02:14:45 - Revisão: 8.0

Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbbug kbinfo KB816562 KbMtpt
Comentários
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)