Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3907 / 13645 ツリー ←次へ | 前へ→

【59540】Excel 2007 の CopyPicture Maro 08/12/17(水) 17:45 質問[未読]
【59551】Re:Excel 2007 の CopyPicture kanabun 08/12/18(木) 11:50 発言[未読]
【59552】Re:Excel 2007 の CopyPicture kanabun 08/12/18(木) 14:09 発言[未読]
【59554】Re:Excel 2007 の CopyPicture Maro 08/12/18(木) 14:56 お礼[未読]
【59555】Re:Excel 2007 の CopyPicture kanabun 08/12/18(木) 15:46 発言[未読]

【59540】Excel 2007 の CopyPicture
質問  Maro  - 08/12/17(水) 17:45 -

引用なし
パスワード
   Excel 2007 で CopyPictureをマクロで実行すると非常に粗い図になってしまいます。どなたか対応方法をご伝授下さい。
例えば、Range("A1:E10")にオートシェイプなどがあり、このRangeをSelectして、

Selction.copyPicture Appearance:=xlScreen, Format:=xlBitmap

を実行します。(Formt:=xlPicture だとマクロでなくても図が荒れます)
次に、Range("A15")を選択して、

ActiveSheet.Paste

を実行します。以上をマニュアルで「図としてコピー」→「貼り付け」で行ってみると図は粗くなりません。ところが、マクロにして実行すると図が非常に粗くなってしまいます。CopyPicture を実行した時点でブレークしてクリップボードを見てみると、すでに図が粗くなっています。マニュアルで「図としてコピー」の後では問題はありません。
Excel 2003 ではまったく問題がなかったのですが、2007ではクリップボード内でのフォーマットもビットマップを指定しているにもかかわらず、通常のビットマップとは違うようです。
形式を選択して貼り付け、図として貼り付け等いろいろ試してみましたが、コピーした時点で図が荒れているため、行き詰まりました。
マニュアルで問題がないということは、何らかの方法があると思うのですが、どなたか知恵をお貸し下さい。

【59551】Re:Excel 2007 の CopyPicture
発言  kanabun  - 08/12/18(木) 11:50 -

引用なし
パスワード
   ▼Maro さん:

こんにちは。

>Excel 2007 で CopyPicture

>CopyPicture を実行した時点でブレークしてクリップボードを見てみると、すでに図が粗くなっています。マニュアルで「図としてコピー」の後では問題はありません。

情報だけなんですが、
Excel2007 ではクリップボードFormat にビットマップ形式がなくなった
そうです。。

Excel2007 の VBA の ChartObject.CopyPicture メソッドがビットマップ形式を
クリップボードにコピーしない
ht tp://hanatyan.sakura.ne.jp/patio/read.cgi?no=166

【59552】Re:Excel 2007 の CopyPicture
発言  kanabun  - 08/12/18(木) 14:09 -

引用なし
パスワード
   ▼Maro さん:

>例えば、Range("A1:E10")にオートシェイプなどがあり、このRangeをSelectして、
>
>Selction.copyPicture Appearance:=xlScreen, Format:=xlBitmap
>
>を実行します。


>Selction.copyPicture Appearance:=xlScreen, Format:=xlBitmap

を、

Selction.Copy

ではどうでしょう?

【59554】Re:Excel 2007 の CopyPicture
お礼  Maro  - 08/12/18(木) 14:56 -

引用なし
パスワード
   ▼kanabun さん:

ありがとうございます。

> Selction.Copy
>ではどうでしょう?

Selection.copy では問題ありません:
Range("XXX:XXX").Select
ActiveSheet.Shapes("xxx").Select
いずれも、マクロで実行して問題ありません。
ただ、セル範囲を画像化したいので悩んでおります。
一つ前にいただいた返信の通り、VBAのバグというより処理プロセスの
不足でしょうね(マニュアルでは問題がないのですから)。
マイクロソフトに直接問い合わせたのですが「それは、有償サポートにな
ります。」と冷たくあしらわれました…クレーマーになってやると一瞬カ
チンと来ましたが、マイクロソフトだからと今更にあきらめて、APIも
含めて深く思考してみます。

【59555】Re:Excel 2007 の CopyPicture
発言  kanabun  - 08/12/18(木) 15:46 -

引用なし
パスワード
   ▼Maro さん:

>ただ、セル範囲を画像化したいので悩んでおります。

はて?
こちらでは、、

//www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=54343;id=excel

で Yukiさんが紹介されている GetBitMap()関数を使って、
BMP形式で範囲を保存する方法

> Sub TEST() ' 此処を実行
>   Dim strFileName As String
>   strFileName = "D:\hogehogeBitMap.bmp"
>   
>   ActiveSheet.Range("範囲").CopyPicture xlScreen, xlBitmap
>   SavePicture GetBitMap(), strFileName
> End Sub

の中で、
範囲のコピーの仕方を
>  ActiveSheet.Range("範囲").CopyPicture xlScreen, xlBitmap
   ↓
   ActiveSheet.Range("範囲").Copy

とするだけでBMP保存はできましたよ。
もちろん、手動でセル範囲を選択しておいて
  Selection.Copy
  SavePicture GetBitMap(), strFileName

でも。

3907 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free