質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

319閲覧

データソース名をシートから得ていたPowerQueryを別ブックのVBAから起動するとエラーになってしまう

SUKUNA

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/06/17 08:22

お世話になります。
「データソース名をシートから得ていたPowerQueryを別ブックのVBAから起動するとエラーになってしまう」
についてです。

お判りになる方いらっしゃいましたら、お教えいただけると幸いです。

1. ブック A にデータソース名をシートセルから得ている PowerQuery があります

M

1let 2 ファイルパス = Excel.CurrentWorkbook(){[Name="InDirPath"]}[Content]{0}[Column1], 3 ソース = Folder.Files(ファイルパス),

※名前 "InDirPath" で定義しているセルにファイルのフルパスが入っています。

 

2. ブック A の PowerQuery は VBA でリフレッシュしています

  • ブック A の VBA

VBA

1Dim ws As Worksheet 2Set ws = ThisWorkbook.Worksheets(sheetName) 3Dim tbl As ListObject 4Set tbl = ws.ListObjects(1) 5 6Set ws = Nothing 7 8tbl.QueryTable.Refresh BackgroundQuery:=False 9 10Set tbl = Nothing

この VBA はブック A で実行すると正常終了します。


エラーとなってしまうのは、ブック B の VBA からブック A の VBA を実行した際に

  • ブック B の VBA

VBA

1Application.Run (ブック A の名前 & "!" & マクロ名)

ブック A の以下の箇所で

VBA

1tbl.QueryTable.Refresh BackgroundQuery:=False

イメージ説明

のエラーとなってしまいます。


「親(ブックB)の VBA」から「子(ブックA)の VBA」を呼び出しているので、PowerQuery の Excel.CurrentWorkbook() が参照出来ていないのではないかと推測はしています。

こちら解決法ご教示いただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決できました。
ブック A のコードでシートをアクティベーションしてから、リフレッシュすると上手くいきました。

●ブック A の(解決した)コード

VBA

1 Dim ws As Worksheet 2 Set ws = ThisWorkbook.Worksheets(sheetName) 3 Dim tbl As ListObject 4 Set tbl = cws.ListObjects(1) 5 6 '// ○クエリテーブルのリフレッシュ 7 ws.Activate 8 tbl.QueryTable.Refresh BackgroundQuery:=False 9 10 Set tbl = Nothing 11 Set ws = Nothing 12

投稿2022/06/21 04:10

SUKUNA

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問