開くたびに約17秒かかる社内資料
業務で使用しているExcelファイルが、開くまでに約17秒かかっていました。計算式を多用したファイルで、構成は次のとおりです。
- シート数:14シート(データシート7枚、計算式を使った集計シート7枚)
- 行数:データシートのうち2枚が6万行と5万行、残りは数千行
- ファイルサイズ:30MB
- 集計シートは社員が閲覧する
社内の誰もが使う資料のため、開くたびに利用者全員が待つ状態でした。これまでは対策として、値だけを別のExcelに貼り付け、そちらを使う運用にしていました。
そこで試したのが、xlsb形式で保存し直す方法です。結果、開く時間は17秒から約5秒になりました。
これにより、値だけを貼り付けた別ファイルの運用はやめました。
あわせて、データベースから出力した37万行の生データでも同じ比較を行いました。両方の結果と、運用上の注意点をまとめます。
xlsxとxlsbの違い
xlsxは、中身がXML(テキスト)のファイルをZIP形式で圧縮したものです。xlsbは、同じ部分をバイナリ形式で保存しています。
手順:「名前を付けて保存」で形式を変える
操作は、ファイルの種類を変えて保存し直すだけです。
- 対象のファイルを開く
- 「ファイル」→「名前を付けて保存」→「参照」を選ぶ
- 「ファイルの種類」で「Excel バイナリ ブック (*.xlsb)」を選ぶ
- 「保存」を押す
元のxlsxファイルは残り、拡張子が.xlsbのファイルが新しく作成されます。シートの内容や計算式はそのまま引き継がれるため、開いた後の操作は変わりません。
結果:実務ファイルは17.3秒→4.9秒
種類の異なる2つのファイルをxlsxとxlsbの両方で保存し、開く時間をそれぞれ3回測定しました。
- 実務ファイル:14シート(データ7枚、計算式を使った集計7枚)。データは6万行と5万行のシートが各1枚、残りは数千行
- 生データ:1シートに37万行。データベースから出力したままのもの
| ファイル | 形式 | サイズ | 1回目 | 2回目 | 3回目 | 平均 |
|---|---|---|---|---|---|---|
| 実務ファイル | xlsx(通常形式) | 30MB | 17.6秒 | 17.1秒 | 17.1秒 | 17.3秒 |
| 実務ファイル | xlsb(バイナリ形式) | 20MB | 4.9秒 | 4.8秒 | 4.9秒 | 4.9秒 |
| 生データ | xlsx(通常形式) | 112MB | 14.2秒 | 14.6秒 | 14.5秒 | 14.4秒 |
| 生データ | xlsb(バイナリ形式) | 33MB | 5.6秒 | 5.3秒 | 5.6秒 | 5.5秒 |
実務ファイルは開く時間が約72%短縮され、約3.5倍速くなりました。生データも約62%短縮しています。
サイズの減少幅と開く時間の短縮幅は一致しない
ファイルサイズの減り方と、開く時間の短縮幅を比較すると次のとおりです。
| ファイル | サイズの減り方 | 開く時間の短縮幅 |
|---|---|---|
| 実務ファイル | 約3割減(30MB→20MB) | 約72%短縮 |
| 生データ | 約7割減(112MB→33MB) | 約62%短縮 |
生データはサイズが約7割減ったのに対し、実務ファイルは約3割減にとどまりました。一方で、開く時間の短縮幅は実務ファイルの方が大きくなっています。
ファイルサイズがそれほど大きくなくても、開くのに時間がかかるファイルであれば試す価値があります。
運用上の注意点
バックアップをこまめに取る
xlsbはバイナリ形式のため、ファイルが壊れることがあるという情報を目にしたことがあります。
私自身は、これまでに壊れたことはありません。ただし、念のためバックアップはこまめに取るようにしています。
別のブックからPower Queryで読み込めない
xlsbに変更したファイルを、別のブックからPower Queryで読み込もうとしたところ、正常に取り込めませんでした。発生した症状は次の2つです。
- 「データの取得」でxlsbを指定すると、ナビゲーター画面の読み込みが終わらなかったり、遅い
- 「すべて更新」を実行すると、参照先のxlsbファイルが立ち上がる
この問題は、参照される側のファイルをxlsxに戻すことで回避しました。他のブックからPower Queryで参照するファイルは、xlsbにしない方が安全です。
まとめ:開くのが遅いファイルはxlsb保存を試す価値がある
開くのに時間がかかるExcelファイルであれば、xlsb保存を一度試す価値があります。私の場合、計算式を多用した実務ファイルの開く時間が17秒から5秒になりました。
| 向いている | 向いていない | |
|---|---|---|
| ファイル | 開くのに時間がかかる(計算式が多い、行数が多い) | 別のブックからPower Queryで読み込む |
| 管理 | バックアップを取る運用がある | バックアップを取らず1ファイルで管理している |
元のファイルは残るため、合わない場合はxlsxに戻すだけで済みます。まずはコピーで試し、ご自身のファイルでどの程度変わるかを確認してみてください。