
PowerQueryでCSVを取り込んだので、
同じファイル名のCSVを差し替えればシート内のデータが変わるようにしています。
そのデータシートからピボットで集計もしています。
ただ、以下の操作が毎回手作業なので
・データメニューから「すべて更新」
・ピボット上で右クリック→更新
これを自動化させたく、以下のソースで「更新」ボタンを作りました。(マクロの記録で作成)
----------
Sub クエリとマクロ更新()
ActiveWorkbook.RefreshAll
ActiveSheet.PivotTables("ピボットテーブル2").PivotCache.Refresh
End Sub
----------
しかし、1回クリックするとCSVは更新されるようですが、ピボットの更新がされず、
もう1回クリックするとピボットの中身が更新されます。
結局、上記で作成した「更新」ボタンを2回押さないと目的が達成されません。
何が原因でしょうか?
1回で、クエリーの更新及びピボットの更新を出来ないでしょうか?
また、何もボタンを押さずにマクロブックを開いたら自動更新は出来ないでしょうか?
(読み込み時間が多くなるなら手動で行います)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>また、何もボタンを押さずにマクロブックを開いたら自動更新は出来ないでしょうか?
これは、Workbook_Openなどに記述(からCall)すれば良いように思いますが、試していません。
一応、該当クエリ、ピボットのみを更新する場合は、下記のような感じでOKかと
Sub Refresh_Query_Pivot()
Dim tmp As Boolean
With ActiveWorkbook.Connections("クエリ - xxx")
tmp = .OLEDBConnection.BackgroundQuery
.OLEDBConnection.BackgroundQuery = False
.Refresh
.OLEDBConnection.BackgroundQuery = tmp
End With
Worksheets(1).PivotTables("yyy").PivotCache.Refresh
End Sub
Worksheets(1) Workbook_Open時にActiveSheetになっている保証がないのでシートをインデックスで指定していますが、(1)は仮定、不具合がある場合は、対象シートを.ActivateでActiveSheetにしてCallするのが良いと思います。
xxx , yyyは、対象の名前です。
No.2
- 回答日時:
こんにちは
接続プロパティなど不明な点もありますが、自身の探求の為、事象を探すと
下記のような記事を見つけました。
バックグラウンドリフレッシュの設定に原因があるようですが、
上記サイト内のサンプルコードで、実験したところ期待する結果を得られそうです。
詳細に付いては、参考サイトをご覧ください。
抜粋コードです。
Dim objConnection As Object
Dim bBackground As Boolean
For Each objConnection In ThisWorkbook.Connections
bBackground = objConnection.OLEDBConnection.BackgroundQuery
objConnection.OLEDBConnection.BackgroundQuery = False
objConnection.Refresh
objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next
ActiveSheet.PivotTables("ピボットテーブル2").PivotCache.Refresh
実行内容
すべての接続をループ
BackgroundQueryを取得し保管
BackgroundQueryを Falseに設定
Refreshを実行
BackgroundQueryを保管値で元に戻す
ループ
PivotCache.Refresh
終了
No.1
- 回答日時:
DoEvents 関数を挟んだら、うまくいきませんかね?
以下の様に「DoEvents」を間に入れたのですが駄目でした。
ActiveWorkbook.RefreshAll
DoEvents
ActiveSheet.PivotTables("ピボットテーブル2").PivotCache.Refresh
やはり2回目に押すた時にピボットが更新されます。
代わりにMsgBox表示を挟ん出も駄目でした。
OKを押すまでステータスバーに「バックグラウンド クエリを実行しています」が出たままで進んでないようなので、中断しちゃってるようです。
OKを押すと完了するようで、やはり2回目の実行でピボットが更新されました。
バックグラウンド クエリーが完了するまで待機できると良さそうですが、
まだ方法が分かりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 11:05
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) excel ピポットテーブルの更新について 1 2022/05/13 16:12
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
Excelでのバックグラウンドで更新とは
Excel(エクセル)
-
5
【VBA】使ってたクエリの接続を特定する方法
Excel(エクセル)
-
6
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
7
ExcelVBAで、ユーザーフォームを新規Bookにコピーしたい
IT・エンジニアリング
-
8
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
9
アクセス クエリを別のファイルへコピーするには?
Access(アクセス)
-
10
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
11
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
12
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
13
クリックイベントなのに、2回クリックしないとフォー
Access(アクセス)
-
14
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
15
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
16
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
17
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない
Excel(エクセル)
-
20
【Excel】[Expression.Error] キーがテーブルのどの行とも一致しませんの解決法?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
Powerpointでランダムな数字の...
-
エクセルでツールバーに「縮小...
-
VBAを使ってエクセルシート...
-
ピボットグラフの書式の固定に...
-
ファイル名を今日の日付、時刻...
-
別ブックからユーザーフォーム...
-
エクセルVBAで、画像の倍率を知...
-
cellsで特定の離れた範囲を選択...
-
VBA[Private Sub]のコードをシ...
-
最初の1回のみにボタンクリッ...
-
【VC++6.0(MFC)】コメントを一...
-
エクセルのマクロでSelection.S...
-
ACCESS VBAからWordのテンプレ...
-
【ExcelVBA】クエリの更新とピ...
-
エクセルVBA 図形に設定された...
-
テキストボックスのカーソル位置
-
VBAでこのような図形の移動はで...
-
htmlまたはJavascriptからファ...
-
グラフに条件付書式を設定でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
cellsで特定の離れた範囲を選択...
-
ファイル名を今日の日付、時刻...
-
最初の1回のみにボタンクリッ...
-
VBA[Private Sub]のコードをシ...
-
どのドキュメントは暗号化され...
-
Powerpointでランダムな数字の...
-
ピボットグラフの書式の固定に...
-
エクセルVBAで、画像の倍率を知...
-
【ExcelVBA】クエリの更新とピ...
-
別ブックからユーザーフォーム...
-
VBAを使ってエクセルシート...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
wordのマクロで縮小して貼り付...
-
EXCELにクリップボードにある画...
-
【VC++6.0(MFC)】コメントを一...
-
Excelのマクロで最下行を選択し...
-
VBA ChartWizardで円グラフが書...
おすすめ情報