Excel 2007以降、Microsoftは従来の.xls
形式をいくつかの形式(特に.xlsx
、.xlsm
、.xlsb
)に分割しました。 .xlsx
形式の使用法と目的を理解するのに問題はありませんが、VBAを含むファイルを作成するときに.xlsm
形式と.xlsb
形式のどちらを使用すべきか疑問に思っています。
もちろん、Webでいくつかのトピックを見つけることができます。例えば:
.xlsb
への参照が見つからないページこの最後のリンクから理解したことは、.xlsm
は何らかのXML形式であり、したがってカスタムリボンタブに必要なことです。
概念上の違いを超えて(.xlsm
はXMLVSに基づいています) .xlsb
はbinaryファイルです)のいずれかを使用する場合、practicalの違いはありますかこのファイル(リボンのカスタマイズを除く)
これらの形式のいずれかを使用したときに実際の違いを見たことがありますか?
これらはすべて、実際のファイルコンポーネントを含む基本的にZipファイルであるという点で類似しています。拡張子を.Zipに置き換えて開くだけで内容を見ることができます。 xlsbとの違いは、コンポーネントがXMLベースではなく、バイナリ形式であるということです。おそらく、これは大きなファイルを操作するときに有益です。
https://blogs.msdn.Microsoft.com/dmahugh/2006/08/22/new-binary-file-format-for-spreadsheets/
.xlsx
は.xlsb
の4倍の長さでロードされ、2倍の長さで保存され、1.5倍のファイルがあります。これを、10'000行* 1'000列= 10'000'000(10 ^ 7)の単純な連鎖=…+1
数式のセルで生成されたワークシートでテストしました。
╭──────────────╥────────┬────────╮
│ ║ .xlsx │ .xlsb │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s │ 43s │
├──────────────╫────────┼────────┤
│ saving time ║ 115s │ 61s │
├──────────────╫────────┼────────┤
│ file size ║ 91 MB │ 65 MB │
╰──────────────╨────────┴────────╯
(ハードウェア:Core2Duo 2.3 GHz、4 GB RAM、5.400 rpm SATA II HD、Windows 7、他のプロセスからのやや重い負荷の下。)
これに加えて、違いはないはずです。より正確に、
どちらの形式もまったく同じ機能セットをサポートしています
このブログを引用 post from 2006-08-29。したがって、.xlsb
がリボンコードをサポートしていないという情報は、上の引用よりも新しいかもしれませんが、フォーラムのソースは間違っていると思います。バイナリファイルをクラックすると、OOXMLファイル構造1-to-1を凝縮して模倣しているようです:ブログ 記事 from 2006-08-07
Xlsbにはxlsmよりも利点があると考えることができます。 xlsmはXMLベースであり、xlsbはバイナリであるという事実は、ワークブックの破損が発生した場合、xlsbよりもxlsmを修復する可能性が高いことです。
後世のために、Excelファイル形式に関するいくつかの外部ソースからのテキストを以下に示します。これらのいくつかは、この質問に対する他の回答で言及されていますが、重要なコンテンツは再現していません。
1。 Doug Mahugh、2006年8月22日から:
...新しいXLSBバイナリ形式。 Open XMLと同様に、Excelで作成できるものはすべて保存できる完全忠実なファイル形式ですが、XLSB形式は純粋なXML形式では不可能な方法でパフォーマンスが最適化されています。
XLSB形式(「Office 12のバイナリファイル形式」のようにBIFF12とも呼ばれる)は、Open XML形式とXPSで使用されるのと同じOpen Packaging Conventionを使用します。つまり、基本的にはZipコンテナであり、Zipツールで開くと、中身を確認できます。ただし、パッケージ内の.XMLパーツの代わりに、.BINパーツが見つかります...
この記事では、 BIN形式に関するドキュメント も参照しています。長すぎてここでは再現できません。
2。 MSDNアーカイブ、2006年8月29日から、XLSB形式に関する既に欠落しているブログ投稿を引用:
XML形式をすばやく効率的に開くために多くの作業を行ったにもかかわらず、このバイナリ形式はExcelで開いたり保存したりするのにさらに効率的であり、多くを含むブックのパフォーマンスの向上につながる可能性がありますデータ、またはOpenプロセス中に多くのXML解析が必要になります。 (実際、多くの場合、新しいバイナリ形式は古いXLS形式よりも高速であることがわかりました。)また、このファイル形式にはマクロを含まないバージョンはありません。すべてのXLSBファイルにマクロ(VBAおよびXLM)を含めることができます。他のすべての点では、上記のXMLファイル形式と機能的に同等です。
ファイルサイズ–両方の形式はZip圧縮アーキテクチャを使用してディスクに保存されるため、両方の形式のファイルサイズはほぼ同じです。両方の形式は同じパッケージ構造を使用し、両方とも同じパーツレベル構造を持ちます。機能のサポート-両方の形式がまったく同じ機能セットをサポートランタイムパフォーマンス-メモリに読み込まれた後、ファイル形式はアプリケーション/計算速度に影響を与えませんコンバーター-両方の形式に同一のコンバーターサポートがあります
XLSB形式は、Excelスタートアップフォルダー(XLSTART)にある非表示のブックファイルに埋め込まれたマクロ専用です。
XLSTARTフォルダー内のxlsmまたはxlsbを使用した簡単で汚れたテスト:
Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }
xlsb(バイナリ)の0,89対xlsm形式の同じコンテンツ(Zipファイルのxml)の1,3s ... :)
何らかの理由で、.xlsmではなく.xlsbを使用すると、オブジェクトモデルにファントムオブジェクトを作成するユーザー定義関数に関するいくつかの問題が解決されました。 https://superuser.com/questions/1005482/Excel-creates-non -existent-worksheets-in-vba-project-Explorer/1215336#1215336