タイトル | : Re: エクセルに画像を転送 |
記事No | : 15550 |
投稿日 | : 2012/07/31(Tue) 12:53 |
投稿者 | : 魔界の仮面弁士 |
> 下記はExcel上に表示したPictureにVBから指定の画像を表示する方法です。(230) 下記の後半部分のコードでしょうか? http://hanatyan.sakura.ne.jp/vbhlp/Excel12.htm
# このサンプル、Test1.xls と Test.xls とを typo っているような…。
> 例えば340KBサイズの画像ファイルをシートのイメージコントロールに14枚ほど転送し保存したエクセルのファイルがなんと300MB近くになってしまいます。
ということは、平均して一枚あたり20〜21MBということですよね。 画像がビットマップとして転送されたのだと仮定しても、ちょっと大きすぎる気がしますね。
たとえば VGA 解像度のデジカメ写真(640x480 ピクセル)の場合、無圧縮ビットマップだと 単純換算で 24bit×640ドット×480ドット=921,600 バイトになります。
実際にはこれにヘッダー情報が追加されますが、VGA サイズでも 900KB。 QXGA サイズ(2048×1536)だとしても 9MB 程度の筈です。
参考までに、手元の Windows7 付属の 灯台.jpg 画像は 1024×768 で ("C:\Users\Public\Pictures\Sample Pictures\Lighthouse.jpg") 548 KB (561,276 バイト)ですが、ビットマップ換算でも 2.25 MB です。
仮に、340KB が 1.5〜2.5MB 程度に増加したとしても、14 枚ならせいぜい 21〜35MB 程度。 300MB に到達するなら、その十倍の 140 枚ぐらいは必要そうなのですけれどね。 (手元に Excel 2003 が無いので、実測検証したわけでは無いのですが)
> 何故こんなに大きくなってしまうのか原因が分かりません。 どこかでループ処理などを誤っていて、予定より多い枚数の画像が貼られていたとか、 あるいは、Excel ファイルに削除し忘れた縦横サイズ0 のイメージが残っているとか、 画像を貼ったシートが非表示にされていて、それが容量を圧迫していたとか、もしくは 同じ座標に同じ画像が複数回重ねて貼られていた…なんてことはないでしょうか。
新規に xls ファイルを用意しなおしてみて、そこに ・画像 1 枚だけ処理した場合 ・画像 5 枚だけ処理した場合 をそれぞれ試した場合、サイズは如何ほどになりますか?
また、JPG ファイルの代わりに、ペイント等で作成した 640x480 のビットマップを 貼りこんでいった場合、Excel のサイズ増加はどの程度でしょうか?
また、「下記はExcel上に表示したPictureにVBから指定の画像を表示する方法です。(230)」を 「Excelのシートに画像を表示(3方法)及びサイズ変更(339)」にした場合はどうでしょう?
|