Удалить ненужные запросы в VBA - PullRequest
1 голос
/ 31 октября 2019

Как удалить все нежелательные запросы из книги?

Sub DeleteQuery()
    Dim queries As Variant
    queries = Array("q1", "q2", "q3")
    For Each qr In ThisWorkbook.queries
        'Not sure about the syntax of the following line
        If qr not in queries Then
        qr.Delete
    Next qr
End Sub

Если запрос отсутствует в списке, его следует удалить

ActiveWorkbook.Queries("Query1").Delete

не будет работать,потому что название нежелательных запросов неясно

Ответы [ 2 ]

3 голосов
/ 31 октября 2019

Вам нужно пройтись по вашим запросам, а затем пройти по всему массиву, чтобы найти совпадение. Если совпадения не существует, удалите.

Sub testingPQ()

    Dim vQuery As Variant
    Dim arrQueries() As Variant
    Dim i As Long

    arrQueries = Array("q1", "q2", "q3")


    For Each vQuery In ThisWorkbook.Queries
        'loop through array to check for each query
        For i = LBound(arrQueries) To UBound(arrQueries)
            If vQuery.Name = arrQueries(i) Then
                'do not delete
                Exit For
            End If
            If i = UBound(arrQueries) Then
                'delete - no match
                vQuery.Delete
            End If
        Next i
    Next vQuery

End Sub
2 голосов
/ 31 октября 2019

Вы можете использовать Application.Match с именем запроса.

If IsError(Application.Match(qr.Name, queries, 0)) Then ' query name is not in list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...