Как сохранить таблицу Power Query как обычную таблицу (без соединений) в новой книге? - PullRequest
1 голос
/ 04 июля 2019

Я ищу простое решение для экспорта одного листа, содержащего одну загруженную таблицу Power Query, в новую книгу без базовых соединений и запросов.

Я думаю, что Microsoft что-то изменилав Excel 2019 относительно поведения таблиц Power Query (ListObject) и способа сохранения их соединений между копиями.Ранее (Excel 2016) при создании копии таблицы или рабочего листа, содержащего таблицу, сохранялись только значения и форматирование, и теперь Excel также дублирует все запросы и соединения, необходимые для обновления этой таблицы.Я не хочу этого - я не хочу раскрывать код Power Query кому-либо, кому я отправляю данные.

Ранее я мог использовать этот простой код:

Dim SourceWb As Workbook
Dim SourceSh As Worksheet
Dim TargetWb As Workbook
Dim TargetSh As Worksheet

Set SourceWb = ActiveWorkbook
Set SourceSh = SourceWb.ActiveSheet

SourceSh.Copy

Set TargetWb = ActiveWorkbook
Set TargetSh = TargetWb.ActiveSheet

Application.DisplayAlerts = False
TargetWb.SaveAs SourceWb.Path & "\" & "Copy.xlsx"
TargetWb.Close
Application.DisplayAlerts = True

и теперь мне нужно предпринять некоторые дополнительные шаги:

Dim SourceWb As Workbook
Dim SourceSh As Worksheet
Dim TargetWb As Workbook
Dim TargetSh As Worksheet
Dim TableCn As WorkbookConnection
Dim TableQr As WorkbookQuery

Set SourceWb = ActiveWorkbook
Set SourceSh = SourceWb.ActiveSheet

SourceSh.Copy

Set TargetWb = ActiveWorkbook
Set TargetSh = TargetWb.ActiveSheet

On Error Resume Next
For Each TableCn In TargetWb.Connections
    TableCn.Delete
Next
For Each TableQr In TargetWb.Queries
    TableQr.Delete
Next

Application.DisplayAlerts = False
TargetWb.SaveAs SourceWb.Path & "\" & "Copy.xlsx"
TargetWb.Close
Application.DisplayAlerts = True

Я знаю, что это не так уж много кода, но я чувствую, что я могу что-то упустить и, возможно, решение может быть немного проще.Кто-нибудь знает о точных изменениях, внесенных Microsoft, которые приводят к такому поведению?Были ли внесены какие-либо изменения в модель VBA, которые помогли бы копировать / вставлять таблицы Power Query без сохранения базовых запросов?

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Вместо того, чтобы копировать весь лист и сохранять его, я рекомендую скопировать таблицу и вставить ее на новый лист, а затем сохранить новый лист.

Сначала вставьте таблицу в виде значений, а затем вставьте один формат. Ниже приведен код:

Public Sub Save_Query_Table()
        Range("Query_Table_Name[#All]").Select
        Selection.Copy
        Workbooks.Add
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

        Application.CutCopyMode = False

        ActiveWorkbook.SaveAs Filename:=FullFileName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

End Sub

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

0 голосов
/ 06 июля 2019

Вы должны быть в состоянии «сохранить как» рабочую книгу, где ваша таблица находится в новой рабочей книге. После создания новой книги перейдите к данным, нажмите кнопку Показать запросы и удалите запросы / таблицы, имеющиеся в системе, чтобы остались только таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...