Итак, у меня есть книга, созданная кем-то другим, с которой уже созданы связи. Одно из соединений извлекает данные из базы данных доступа и затем выводит их в сводную таблицу.

Если я зайду в « Данные»> «Существующие подключения»> «Выберите свое подключение (соединение с доступом)»> нажмите «Открыть»> «Таблица»> «Новый рабочий лист», будет выведена вся таблица, которая является именно тем, что я хочу; Тем не менее, я хочу сделать это с 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 или.Обновить строки. Если я закомментирую это, то он просто не загружает данные. Кто-нибудь нашел способ автоматизировать это раньше? Сложность в том, что у рабочей книги больше нет исходной базы данных.

1 ответ1

0

Лучшее решение, которое я смог найти, это сделать следующее:

  1. Создайте сводную таблицу из VBA в исходной книге на новом листе
  2. Сделайте так, чтобы сводная таблица выглядела именно так, как я хочу, в исходной книге.
  3. Выровняйте сводную таблицу, скопировав столбцы и строки, которые она занимает, на новую вкладку. Это устраняет любые ненужные данные, чтобы не тратить память. Если бы я не сделал этого шага, мой компьютер фактически исчерпал бы память для копирования всего набора данных.
  4. Скопируйте выровненный лист в новую книгу.

Немного обошлось, но это сработало для меня, поэтому я надеюсь, что это сработает и для других.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .