を検証するためのクエリを実行します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/で始めることができます。ようこそ! – OpiesDad
フィードバックありがとうございます、私はそれを更新します。私は他の質問に言及し、その質問は有効です。 TechbookallyコードであるWorkbook.Connectionsオブジェクトについて述べました。 – dfresh22
オブジェクトはコードではありません。オブジェクトの使用方法がわからない場合や、オブジェクトに関する特定のものを求めている場合は、これはトピックに関する質問です。つまり、何かしたいのですが、どうすればいいのかわかりませんが、このオブジェクトは意味があります。何も試していないし、コードを作成していません。私。 "他の質問もおそらく良くありませんでした。一度あなたが実際にあなた自身でそれをやろうとしたら、あなたは実際には2時間もかからなかった。あなたがイニシアチブをとったことをうれしく思います。 – OpiesDad