Как добавить параметры к внешнему запросу данных в Excel, который не может быть отображен графически?

Я часто использую MS Excel Get External Data создать простые отчеты - рабочие запросы против баз данных и отображающийся приятно в Excel. Замечательные особенности Excel как фильтрация и сводные таблицы и знакомый интерфейс для пользователей делают это довольно хорошим для этого. Однако одно ограничение с Microsoft Query - Вы, не могут добавить параметры к запросам, которые не могут быть отображены графически, который значительно ограничивает SQL, который можно записать.

Там каким-либо решением являются к ошибке "параметры, не позволяются в запросах, которые не могут быть отображены графически"?

36
задан 3 revs, 2 users 80% 9 June 2011 в 20:52
поделиться

1 ответ

Если у вас есть Excel 2007, вы можете написать VBA для изменения соединений (т.е. внешних запросов данных) в рабочей книге и обновления свойства CommandText. Если вы просто добавите ? там, где вам нужен параметр, то при следующем обновлении данных он запросит значения для соединений! Магия. При просмотре свойств соединения кнопка "Параметры" будет активна и может использоваться как обычно.

Например, я бы написал макрос, выполнил его в отладчике и заставил его установить CommandText соответствующим образом. После этого макрос можно удалить - это просто средство обновления запроса.

Sub UpdateQuery
    Dim cn As WorkbookConnection
    Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection
    For Each cn In ThisWorkbook.Connections
        If cn.Type = xlConnectionTypeODBC Then
            Set odbcCn = cn.ODBCConnection

            ' If you do have multiple connections you would want to modify  
            ' the line below each time you run through the loop.
            odbcCn.CommandText = "select blah from someTable where blah like ?"

        ElseIf cn.Type = xlConnectionTypeOLEDB Then
            Set oledbCn = cn.OLEDBConnection
            oledbCn.CommandText = "select blah from someTable where blah like ?" 
        End If
    Next
End Sub
5
ответ дан 27 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: