Excel2000のVBAで、表の大きな範囲を画像にするには?


かぼす  2008-02-06 00:09:43  No: 100205

はじめまして、かぼすと申します。
VBAになってしまい、ここの意図と外れてしまうかもしれませんが、
質問させて頂きます。

<環境>
WindowsXP
Excel2000

Excelのマクロで表の大きな範囲を「図のコピー」でコピーし、
他のシートに貼り付けると言う作業を行いたいです。
ピクチャでは範囲が大きいと部分的に欠けてしまうので、
ビットマップ形式でのコピーをしています。

マクロの記憶で出てきたコード

Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap

で処理を行ったのですが、クリップボード内に真っ白な画像しか記憶されません。。

貼り付けて見ても真っ白な画像が貼り付けられます。
手動でコピーした場合は問題なく動作します。

どなたかご存知の方いらっしゃいませんでしょうか?


かぼす  2008-02-14 04:11:56  No: 100206

レスつかないなぁ。。
書き方がわるいのかな。。


魔界の仮面弁士  2008-02-14 05:09:50  No: 100207

> 書き方がわるいのかな。。
悪いとは思いませんが、私は単純に
>>> Excelのマクロで表の大きな範囲を「図のコピー」でコピーし、
を再現させるのが面倒そうだな、と思ったので、
回答を控えていた次第。m(_ _)m

という事で、具体的な回答はできませんが、それでも良ければ…。

>>> 手動でコピーした場合は問題なく動作します。
まずは、問題点の切り分けを行いましょう。

手動コピー時に、クリップボードにどの形式でコピーされているのか、
クリップボード内のデータ形式をすべて列挙していただけますか?

# コードで調査するなら、EnumClipboardFormats API で。
# clipbrd.exe で簡易調査するなら、[表示]メニューで。

そして、CopyPicture メソッドの場合に生成されるデータ形式が、
手動コピーの場合の場合とどう異なっているか比較してみてください。
(データ形式は同じなのに、画像自体が欠損しているのか、
 それとも、そもそも必要なデータ形式が含まれていないのか…)


さるべーじ  URL  2008-02-14 05:38:28  No: 100208

> 書き方がわるいのかな。。

うーん(^^;)。

他の方の理由はわかりませんが、私がコメントをつけなかった理由としては。

---

1. 『表』を「『図』のコピー」する手順がわからなかった

「表」って、ふつうはセルのことだと思うんですよ。
それに対するコピーコマンドは「コピー」であって「図のコピー」ではありませんよね。
しかも「図のコピー」というコマンドが見つかりませんでした。

というわけで、今回カボスさんがしたかったのが「表のコピー」なのか
「表ではない何かを図としてコピー」なのかわからなかったんです。

いや、私が動作を確認したのはExcel2003ですので、もしかしたらExcel200では
「図のコピー」というコマンドがどこかにあるのかもしれない。
いやいや、私に見つけられなかっただけで、実はExcel2003にも「図のコピー」という
コマンドがどこかにあるのかもしれない。

2. 希望と違う動作をした時の操作手順がわからなかった

「マクロの記録」(記憶ではありませんよね)でコードを生成したところまでは
わかるんですが、そのマクロを、Excelのどんな状態からどう呼び出したのかが
「処理を行った」という表現だけで済ませてしまっているために、
こちらで同様の現象を再現できなかったんです。

ちなみに私の環境では、提示いただいた1行だけのマクロを作ってCtrl+Kに割り当て、
複数セルを選択した状態でショートカット実行、オートシェイプを選択した状態で
ショートカット実行したところ、どちらでも正常にビットマップとして
クリップボードに格納できました。
Graphオブジェクトを選択してショートカット実行した場合はエラーができましたが、
Graphオブジェクトの下のセルを選択した状態ではGraphもコピーできました。

3. 「ご存知か?」と言われると、存じてないんです

状況説明だけで、その状況から何を求めているかの説明が抜けているんですね。

となると、「何を知っている人」を期待しているのかがわからないんです。

希望通りの動作を行える方法を知りたい?
でもそれにしては、動作が再現するコードと再現手順を提示されていません。

Excelのバグだと思うので、そのようなバグ情報を知っている人に教えてもらいたい?
でもこの説明だけではロジックの問題なのかバグとして疑うべきかの判断がつきません。

---

という理由からでした。

再現手順や希望を、もう少し具体的に書かれていると、
もっと早くにコメントがついたかもしれませんね。

現時点での私の感覚としては、コピー対象をうまく選択できていないか、
(マクロの実行操作を行っている途中でフォーカスが外れちゃうとか)
マクロをうまく実行できていないかのどちらかのような気がしています。


かぼす  2008-02-14 19:22:15  No: 100209

>魔界の仮面弁士様
ご回答有難うございます。

ご指示頂いたクリップボードの内容を確認してみました。
コード・手動共にビットマップ形式で画像が保存されています。

コードで実行した場合、大きさは指定した範囲の大きさで、
セルの内容が真っ白な画像が保存されています。

手動で実行した場合は正常に全てのデータが入った状態で画像が保存されていました。

>さるべーじ様
ご回答有難うございます。

1について、説明が足りませんでしたm(__)m
Shiftキーを押下しながら「編集」をクリックすると、メニューの内容が変わり、
セルを選択している状態で、セルの内容を図としてコピーする、
「図のコピー」と言うメニューが表示されます。

2について、こちらの怠慢があったのですが、
作成しているプログラム上では他の処理も行っている状態でテストしていました。
ご指摘の通り、この動作のみのマクロを作成した所、正常に動作してしまっています。。

3について、広い意味で聞きたかった為、あいまいな表現になってしまいました。。
私と同様な現象を経験された方がいて、どのように対処されたかを聞きたかったのです。

再現手順が今は提示させていただく事ができず、大変申し訳なく思っています。
範囲を狭めるとうまくコピーが行えるのでフォーカスが外れているわけではなさそうなのですけど(-_-;)

>皆様
質問をする準備が整っていない状態での質問になってしまっているので、
もう少し調査し、再現方法等はっきりしましたら、また質問させて頂きます。
回答を下さった方、検討して頂いた方、失礼致しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加