У меня есть файл 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