Можно ли подключить модель Power Query к существующей и идентичной модели? - PullRequest
0 голосов
/ 01 марта 2019

У меня есть файл Excel с большой моделью, созданной в PowerQuery.В зависимости от модели модель подключена к PowerPivot, что позволяет вам использовать сводки в файле.

Когда выходит другая версия файла, я не хочу терять все созданные пользовательские сводки.Проблема возникает, когда я пытаюсь скопировать лист из одного Excel в другой, который идентичен в структуре (с той же моделью ...).

Копирование листа восстанавливает другую модель, идентичную копииоригинал.

Сначала дублируются Соединения, добавляя (n) в конец имени (например, Рабочие книги ("имя файла"). Соединения ("Запрос - продукт * 1009").* (1)")), потому что Excel находит то же имя запроса в другом файле.

Запрос в PowerQuery дублируется (например, «Запрос - продукт (1) ») по той же причине.

В Power Pivot модель также дублируется.

Следуйте коду, сгенерированному при копировании листа в другую рабочую книгу:

Sub Macro1()

Sheets("OldSheetName").Select
    
Workbooks("NewFileName").Connections.Add2 _
        "Query - Product (1)", _
        "Description", _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Product (1)"";Extended Properties=""""" _
        , "SELECT * FROM [Product (1)]", 2

'Same Code for the others connections 

Sheets("OldSheetName").Copy After:=Workbooks( _
"NEWFileName.xlsm").Sheets(13)

End Sub

Я попытался сначала удалить соединения, а затем повторить то же соединение.Таким образом, я теряю Pivot, связанный с этими соединениями.

Следуйте используемому коду:

Sub Macro1()

Sheets("SheetName").Select

Workbooks("OldFileName").Connections("Query - Product").Delete 
   
Workbooks("NewFileName").Connections.Add2 _
        "Query - Product", _
        "Description", _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Product"";Extended Properties=""""" _
        , "SELECT * FROM [Product]", 2

'Same Code for the others connections 

Sheets("NewSheetName").Copy After:=Workbooks( _
"NEWFileName.xlsm").Sheets(13)

End Sub

У кого-нибудь есть предложения по решению проблемы?Можно ли использовать код VBA, чтобы связать новую модель с существующей?

Заранее спасибо

Federico

...