クエリの自動更新


Power QueryでCSVを取得しました。

このデータをワークシート上に読み込みます。

こうして読み込んだデータは、いわば「元のCSVファイルとリンクされている」ような状態です。元のCSVファイルを変更すると、ワークシート上のデータも更新されます。ただし、何もしないで自動的に更新されるわけではありません。ワークシート上のデータを更新するには、[更新]あるいは[すべて更新]を実行しなければなりません。ちなみに[更新]にはAlt + [F5]、[すべて更新]にはCtrl + Alt + [F5]というショートカットキーが割り当てられています。

まぁ、これはこれでいいのですが、ごく希に「元のファイルが変更されたら、ワークシート上のデータも自動的に更新してほしい」という状況があります。それも、できます。標準ではExcelの右端に表示される[クエリと接続]ペインの中で、自動更新させたいクエリを右クリックします。実行すると表示されるメニューから[プロパティ]を選択してください。

実行すると[クエリ プロパティ]ダイアログボックスが開きます。

ここにある[定期的に更新する]チェックボックスをオンにし、その右にあるボックスで、更新する間隔を"分単位"で指定します。最短が1分間隔です。もっと短い、たとえば1秒間隔とかは指定できないのか?と、たまに質問されますが、できませんし、そんなことが可能になったら大変です。思い出してください。このPower Queryって、基幹システムなどのDBサーバーに、直で接続できるんです。DBサーバーに対して、複数の(しかも膨大な)クエリが秒間隔で送られたらサーバーに悪影響を及ぼします。なので、短くても分単位なのでしょうね。

ここのプロパティには、ほかにも便利な設定があります。たとえば[ファイルを開くときにデータを更新する]チェックボックスをオンにしておくと、こうしたクエリが保存されているブックをExcel上で開いたときに更新されます。たいていは、これで事足りるでしょう。ちなみにこの[ファイルを開くときにデータを更新する]チェックボックスは、標準ではオフです。あるいは、[すべて更新でこの接続を更新する]も、ケースによっては便利かもしれません。先にご紹介した、リボンから行う[更新]は、アクティブセルがあるテーブル(に接続されているクエリ)だけを更新します。対して[すべて更新]は、ブック内にあるすべてのクエリが更新されます。もし、ブック内に、更新処理に長い時間がかかるようなクエリがひとつでも存在すると、それらすべての更新が終わるまで待たなければなりません。そうしたイライラを解消するために、更新に時間がかかるクエリは、この[すべて更新でこの接続を更新する]をオフにしておくといいかもしれません。こちらは標準でオンになっています。