Я способный решить эту проблему с помощью объекта Workbook.Query.
вот мое решение.
Public Sub FunctionToTest_ForStackOverflow()
' Doug.Long
Dim wb As Workbook
' create empty workbook
Set NewBook = Workbooks.Add
Set wb = NewBook
' copy queries
CopyPowerQueries ThisWorkbook, wb, True
End Sub
Public Sub CopyPowerQueries(wb1 As Workbook, wb2 As Workbook, Optional ByVal copySourceData As Boolean)
' Doug.Long
' copy power queries into new workbook
Dim qry As WorkbookQuery
For Each qry In wb1.Queries
' copy source data
If copySourceData Then
CopySourceDataFromPowerQuery wb1, wb2, qry
End If
' add query to workbook
wb2.Queries.Add qry.Name, qry.formula, qry.Description
Next
End Sub
Public Sub CopySourceDataFromPowerQuery(wb1 As Workbook, wb2 As Workbook, qry As WorkbookQuery)
' Doug.Long
' copy source data by pulling data out from workbook into other
Dim qryStr As String
Dim sourceStrCount As Integer
Dim i As Integer
Dim tbl As ListObject
Dim sht As Worksheet
sourceStrCount = (Len(qry.formula) - Len(Replace$(qry.formula, "Source = Excel.CurrentWorkbook()", "")))/Len("Source = Excel.CurrentWorkbook()")
For i = 1 To sourceStrCount
qryStr = Split(Split(qry.formula, "Source = Excel.CurrentWorkbook(){[Name=""")(1), """]}")(0)
For Each sht In wb1.Worksheets
For Each tbl In sht.ListObjects
If tbl.Name = qryStr Then
If Not sheetExists(sht.Name) Then
sht.Copy After:=wb2.Sheets(wb2.Sheets.Count)
End If
End If
Next tbl
Next sht
Next i
qryStr = qry.formula
End Sub
Function sheetExists(sheetToFind As String) As Boolean
'http://stackoverflow.com/questions/6040164/excel-vba-if-worksheetwsname-exists
sheetExists = False
For Each sheet In Worksheets
If sheetToFind = sheet.Name Then
sheetExists = True
Exit Function
End If
Next sheet
End Function
См. Здесь, как задать вопрос: http://stackoverflow.com/help/mcve. Пожалуйста, начните кодирование и вернитесь, когда у вас возникнет конкретный вопрос, если/когда вы застряли, поскольку это не фабрика кода. Возможно, это: https://blog.crossjoin.co.uk/2015/06/10/power-queryexcel-2016-vba-examples/ может помочь вам приступить к работе. Добро пожаловать в SO! – OpiesDad
Спасибо за отзыв, я обновлю его. Я ссылался на другие вопросы, и вопрос действительно. Я упомянул объект Workbook.Connections, который представляет собой технический код. – dfresh22
Объект не является кодом. Если вы не знали, как использовать объект или спрашиваете что-то конкретное об объекте, тогда это будет вопрос по теме. Как обычно, вы в основном сказали: «Я хочу что-то сделать. Я понятия не имею, как это сделать, но, возможно, этот объект имеет значение. Я ничего не пробовал, и я не создал никакого кода. меня." Другие вопросы, вероятно, тоже были не очень хорошими. Как только вы на самом деле пытались сделать это сами, вы на самом деле сделали это менее чем за 2 часа. Я рад, что вы взяли инициативу. – OpiesDad