![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
Excelでのバックグラウンドで更新とは
Excel(エクセル)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
9
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
10
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
11
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
12
外部データの更新がうまくできません(Excel VBA)
Visual Basic(VBA)
-
13
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
14
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
15
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
16
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
17
マクロで印刷→セルの値から部数変更するには
Excel(エクセル)
-
18
Excleピボットでデータのない部分も時系列で表示したい
Excel(エクセル)
-
19
EXCELの条件付き書式で数式を空白と認識してくれる方法
Excel(エクセル)
-
20
E列のセルに数値が入れば(空白でなければ)B列の同じ行のセルに色がつく
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
ファイル名を今日の日付、時刻...
-
Excelの中でオートシェイ...
-
ピボットグラフの書式の固定に...
-
エクセルシートをまとめて印刷...
-
最初の1回のみにボタンクリッ...
-
VBAでシートの保護をかける際に...
-
Word VBAでWindows media playe...
-
VBAを使ってエクセルシート...
-
エクセルで「ODBC Microsoft Ac...
-
Pictures.Insertメソッド⇒Shape...
-
別のパソコンでエクセルのマク...
-
「ほかのアプリケーションを無...
-
マクロを消すマクロは不可能?
-
エクセル終了時の保存確認メッ...
-
EXCELマクロコードを、それを含...
-
一太郎システムマクロファイル...
-
Adobe Reader を閉じる
-
openofficeのエラー
-
【VBA】複数ブックから特定のシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
cellsで特定の離れた範囲を選択...
-
ファイル名を今日の日付、時刻...
-
Powerpointでランダムな数字の...
-
VBA[Private Sub]のコードをシ...
-
エクセルシートをまとめて印刷...
-
エクセル2007 テキストボ...
-
別ブックからユーザーフォーム...
-
ピボットグラフの書式の固定に...
-
VBAを使ってエクセルシート...
-
エクセルのマクロでSelection.S...
-
最初の1回のみにボタンクリッ...
-
VBAに詳しい方教えてください。
-
VBAをVBに変換する方法
-
エクセルワークシート上に印刷...
-
Pictures.Insertメソッド⇒Shape...
-
【ExcelVBA】クエリの更新とピ...
-
エクセルVBAで、画像の倍率を知...
-
エクセル vba クリック~離し...
おすすめ情報