tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: エクセルに画像を転送
投稿日: 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)」にした場合はどうでしょう?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。