Sub GetNewData()
Sheets(1).range("A1").QueryTable.Refresh _
BackgroundQuery:=False
Sheets(2).PivotTables(1).RefreshTable
' 外部データ取り込み範囲の更新が完全に終了してから
' ピボッドテーブルを更新する
End Sub
また、Excel 2000では一定時間ごとに外部データの自動更新を行なうことができます。発注の状況を30分ごとに確認したり、最新の株価情報を確認したり、計器類の測定値を表示したりなど、さまざまな用途に利用することができます。設定するには、外部データの抽出されている範囲で右クリックし、「データ範囲プロパティ」を選択し、表示させます。その中の「コントロールの更新」項目のうち「更新の周期」で何分ごとに更新をかけるかどうかを設定することができます。またこの時、合わせて「更新時にファイル名を確認」のチェックをはずしておくと、いちいち更新のたびにファイルを指定する手間が省けて、さらに便利になります(図22)。マクロで設定する場合は、「QueryTableオブジェクト」のそれぞれ、「RefreshPeriodプロパティ」「TextFilePromptOnRefreshプロパティ」を下記のように設定すると、30分ごとに外部データを自動で更新させるように設定することができます。
図22:「外部データ範囲のプロパティ」で更新までの時間などを設定する |
![]() |
With Range("A1").QueryTable
.RefreshPeriod = 30
.TextFilePromptOnRefresh = False
End With
それに対して、先程取り込んできたテキストデータをデータソースに設定したピボッドテーブルなどのような“内部の”データを参照しているものに関しては、自動更新の機能は備えていません。もし、どうしてもQueryTableオブジェクトでイベントを使用したいのであれば、あらかじめクラスモジュールを新規作成して、イベント付きのQueryTableオブジェクトを宣言しておく必要があります。クラスモジュールについては本誌の別の項でも紹介しているので、そちらも参考にしてください。
図23:テキストファイルを元に最新の情報に更新 |
![]() |
「外部データ範囲のプロパティ」での設定に合わせて、データが更新される![]() |
![]() |