EXCELのImage関数で表示させた画像を更新させる

2025/02/07
サーバ上の画像データを更新に合わせてExcelのImage関数出力も更新させる。
いつの頃からかExcelに備わったImage関数。これはWebサーバ上の画像をExcelで管理するうえで非常に便利なんです。しかし、サーバ上の画像データを更新してもExcelは頑なに古い画像を離してくれない。これを打破してみた。

Excelは頑なに画像データを離さない

ExcelのIMAGE関数は、Webサーバー上の画像データを管理するのに非常に便利です。しかし、決定的な問題が一つあります。それは、Webサーバー上のデータが更新されても、Excelの画像が自動的に更新されないことです。

たとえファイルを閉じて再度開いても、Excelデータを更新しても、キャッシュをクリアしても、画像は最初のデータのままです。Excelが一度取得した画像をいつまでも保持する仕様(バグかも)だからでしょう。

Excelをだましたい

多分、【画像URL】←→【画像】という頑なな絆が構築されていると思います。

それでは、同じ画像のURLでも異なったものであるとExcelが誤認するように仕向けたらどうなるでしょう。

クエリ文字列で解決

通常、IMAGE関数は次のように指定します:

=IMAGE("画像url")

この場合、Webサーバーの画像を変更しても、Excelの画像は更新されません。

しかし、以下のようにクエリ文字列を追加すると、更新された画像が表示されます:

=IMAGE("画像url?xxx")

毎回異なるxxxを指定することで、最新の画像が表示されるようになります。

ExcelにはRAND()関数があるので、xxxの代わりに使えば、画像は適宜更新されることになります。
具体的には次のような式になります。(さすがに2回連続同じrand値が出ることはないと思います)

=IMAGE("画像url" & "?" & RAND())

これにより、セルの内容が変わったり手動で更新作業を行ったときに、新しい画像が表示されるようになります。
RAND()関数の代わりにNOW()関数(現在の日時のシリアル値)を使っても同じ結果が得られます。こちらの方が重複の可能性が低いのでエレガントかな?

 

めでたしめでたし。

 


コメント欄を読み込み中