У меня есть рабочая книга, которая содержит сводную таблицу, которая обновляется макросом. Однако перед обновлением данных строка подключения изменяется:
With ThisWorkbook.Connections("Data").ODBCConnection
.Connection = [Redacted]
.CommandText = "EXEC ExtractCases " & Client
.BackgroundQuery = False
.Refresh
End With
Это, кажется, заставляет сводную таблицу создавать новое соединение (называемое либо Connection
, либо Data1
, и я не могу понять, что он делает, чтобы выбрать между ними) и указывает на это. Поэтому мне нужно добавить такие строки:
Sheets("Pivot").PivotTables("Pivot").ChangeConnection ThisWorkbook.Connections("Data")
Sheets("Pivot").PivotTables("Pivot").PivotCache.Refresh
Что, кажется, работает (кроме случаев, когда это не так), но оставляет много мертвых соединений, стучащих по рабочей книге, что вызывает путаницу.
Я попытался вручную удалить соединение Connection
, но затем он неожиданно назвал себя Data1
безо всякой видимой причины, и система расстроилась, потому что несуществующий Connection
не может быть удален.
Есть ли что-то очевидное, что я делаю не так? Есть ли какой-то волшебный способ исправить это, чтобы он не создавал второй, во-первых, вызывающий такие головные боли?
Примечание: Я выполняю этот код в Excel 2010, но книга должна быть открыта к 2003 году; тем не менее, я удаляю модуль VB перед распространением, так что с макросами 2010 года все в порядке, это просто вещи в рабочей книге, которые могут сработать из-за этого ...