2017-02-18 10 views
1

Я создал книгу в Excel 2016, используя Power Query. Я использую код для изменения запроса. Но я хочу, чтобы это можно было запустить и в Excel 2013. Как изменить код для доступа к запросу?Как изменить запрос в Excel 2013 при создании в Excel 2016 Power Query

Это мой код работает в Excel 2016, но не в 2013 году и старше.

Sub UpdateQuery() 
    Dim CmdText As String 

    'Compile error here "User Defined Type not defined" 
    Dim qry As WorkbookQuery 

    'Compile error here "Method or data member not found" 
    Set qry = ThisWorkbook.Queries("CurrentQuery") 
    CmdText = qry.Formula 

    CmdText = ... make a change 

    qry.Formula = CmdText 

End Sub 

Этот код отлично работает в Excel 2013, но не дает мне того, что я хочу.

Sub UpdateQuery2013() 
    Dim cmdText As String 

    Dim lo As ListObject 
    Set lo = ws.ListObjects("CurrentTable") 
    CmdText = lo.QueryTable.CommandText 

    CmdText = ... make a change 

    lo.QueryTable.CommandText = cmdText 

End Sub 

Вышеприведенные возвращается: Команда текст: SELECT * FROM [QueryCurrent] Строка соединения: Provider = Microsoft.Mashup.OleDb.1; Источник данных = $ Workbook $; Местонахождение = QueryCurrent; Extended Properties = ""
Тип команды: SQL

Я действительно хочу изменить QueryCurrent. Как мне это сделать?

ответ

0

Это обходной путь. Я не знаю, есть ли способ изменить исходный запрос (Power Query) из VBA с помощью Excel 2013.

Наконец-то я понял, что могу просто избежать использования редактора Power Query. Введите запрос в Excel так же, как в предыдущих версиях: на ленте> Данные> Подключения> Свойства> вкладка «Определение»> введите там строку запроса и подключения. Затем используйте код Excel 2013 для изменения.

Sub UpdateQuery2013() 
    Dim cmdText As String 

    Dim lo As ListObject 
    Set lo = ws.ListObjects("CurrentTable") 
    CmdText = lo.QueryTable.CommandText 

    CmdText = ... make a change 

    lo.QueryTable.CommandText = cmdText 

End Sub 

Работы хорошо.