VBA - 从现有连接转储数据

VBA - 从现有连接转储数据

所以我有一个其他人创建的工作簿,其中已经创建了连接。其中一个连接从 Access 数据库检索数据,然后将其输出到数据透视表。

如果我去数据 > 现有连接 > 选择我的连接(访问连接) > 单击打开 > 表 > 新建工作表,它将输出整个表格,这正是我想要的;但是,我想使用 VBA 自动执行此操作。如果我使用宏录制器,它最终会得到:

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

每当我再次运行宏时,它都会在 .ListObject.DisplayName 或 .Refresh 行处出错。如果我注释掉这些,那么它就不会加载任何数据。有人找到过自动化的方法吗?棘手的部分是工作簿不再具有原始数据库。

答案1

我能找到的最佳解决方案是执行以下操作:

  1. 在新工作表上的原始工作簿中使用 VBA 创建数据透视表
  2. 使数据透视表在原始工作簿中完全符合我的要求
  3. 通过将数据透视表所占的列和行复制到新选项卡来“展平”数据透视表。这样可以消除任何不必要的数据,从而不浪费内存。如果我不执行此步骤,我的计算机实际上会耗尽用于复制整个数据集的内存。
  4. 将展平的工作表复制到新的工作簿。

虽然需要做一些工作,但这对我来说是有效的,所以我希望它对其他人也有效。

相关内容