Как отсоединить запрос от структурированной таблицы И удалить этот запрос в VBA - PullRequest
0 голосов
/ 09 июня 2019

Я знаю, что с Excel 2016 я могу просто удалить запрос, подобный следующему:

ActiveWorkbook.Queries("aaa").delete

Однако это оставит "потерянное" соединение запроса.Поэтому, если я обновлю оставшуюся структурированную таблицу, я увижу ошибку

 Query xxx was not found

. Я знаю, что могу избежать этого, сначала отсоединив запрос следующим образом:

ActiveSheet.ListObjects("aaa").Unlink

Как я могуобъединить эти 2 кода в макрос, который:

  1. Принимает имя запроса в качестве ввода (имя в списке редактора Power Query Editor)
  2. Удаляет ссылку на структурированную таблицу
  3. Удалить этот запрос

Я предпочитаю метод, который работает в коллекции запросов ActiveWorkbook.Потому что ListObjects зависит от листа, и имя листа может измениться.Примерно так:

ActiveWorkbook.Queries("aaa").[something].unlink
ActiveWorkbook.Queries("aaa").delete

1 Ответ

1 голос
/ 09 июня 2019

Относительно метода ListObject.Unlink, документация (https://docs.microsoft.com/en-us/office/vba/api/excel.listobject.unlink) предлагает:

Удаляет ссылку на сайт Microsoft SharePoint Foundation из списка. Ничего не возвращает.

Не представляется актуальным, поскольку вы не упоминаете SharePoint. Возможно, приведенный ниже код - то, что вам нужно.

Option Explicit

Private Sub DeleteQueryAndConnection()

    Dim nameOfQueryToDelete As String
    nameOfQueryToDelete = "someQuery"

    With ThisWorkbook
        .Queries(nameOfQueryToDelete).Delete
        .Connections("Query - " & nameOfQueryToDelete).Delete
    End With

End Sub

Я не получил «Запрос xxx не найден» ошибка после выполнения этого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...