VBA - dados de dump da conexão existente

0

Portanto, tenho uma pasta de trabalho criada por outra pessoa para a qual já existem conexões criadas. Uma das conexões recupera dados de um banco de dados de acesso e, em seguida, envia para um pivotável.

Se eu for Data > Conexões existentes > Selecione minha conexão (o acesso) > clique em abrir > Tabela > Nova planilha , ela produzirá a tabela inteira, que é exatamente o que eu quero; no entanto, quero fazer isso com o VBA automatizado. Se eu usar o gravador de macro, ele acaba com:

Sub Macro1()
'
' Macro1 Macro
'

'
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook. _
    Connections("Access G183"), Destination:=Range("$A$1")).TableObject
    .RowNumbers = False
    .PreserveFormatting = True
    .RefreshStyle = 1
    .AdjustColumnWidth = True
    .ListObject.DisplayName = "Table_Data"
    .Refresh
End With
End Sub

Sempre que eu executar a macro novamente, ele cometerá erros nas linhas .ListObject.DisplayName ou .Refresh. Se eu comentar isso, simplesmente não carrega dados. Alguém já encontrou uma maneira de automatizar isso antes? A parte complicada é que a pasta de trabalho não tem mais o banco de dados original.

    
por Eric F 13.03.2018 / 19:10

1 resposta

0

A melhor solução que pude encontrar foi fazer o seguinte:

  1. Crie uma tabela dinâmica a partir do VBA na pasta de trabalho original em uma nova planilha
  2. Faça com que a tabela dinâmica mostre exatamente como eu ainda a quero dentro da pasta de trabalho original
  3. "Achatar" a tabela dinâmica copiando as colunas e linhas que ocupa para uma nova guia. Isso elimina quaisquer dados desnecessários para não desperdiçar memória. Se eu não fizesse essa etapa, meu computador ficaria sem memória para copiar todo o conjunto de dados.
  4. Copie a planilha nivelada para a nova pasta de trabalho.

Um pouco de trabalho, mas isso funcionou para mim, então espero que seja para os outros também.

    
por 15.03.2018 / 20:12