Excel VBA質問箱 IV

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

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


6963 / 13646 ツリー ←次へ | 前へ→

【42038】貼付画像の切り抜き アーバン 06/8/30(水) 9:29 質問[未読]
【42040】Re:貼付画像の切り抜き りん 06/8/30(水) 9:42 発言[未読]
【42041】Re:貼付画像の切り抜き アーバン 06/8/30(水) 10:21 発言[未読]
【42042】Re:貼付画像の切り抜き りん 06/8/30(水) 11:16 回答[未読]
【42044】Re:貼付画像の切り抜き アーバン 06/8/30(水) 12:26 お礼[未読]
【42047】Re:貼付画像の切り抜き りん 06/8/30(水) 13:02 発言[未読]
【42084】Re:貼付画像の切り抜き(2) アーバン 06/8/31(木) 12:20 お礼[未読]

【42038】貼付画像の切り抜き
質問  アーバン  - 06/8/30(水) 9:29 -

引用なし
パスワード
   お世話になります。下記で困っております。
シートへBMP画像を貼付し、その画像と重なるセル範囲を指定して
必要な部位を目的のセルへコピぺする方法では、セル範囲であるがゆ
えに大まかな範囲となってしまいます。(.CopyPicture)
そこで、例えば画像上でシェイプの四角形で任意の範囲を指定して
画像を得る様な方法はありますでしょうか?

【42040】Re:貼付画像の切り抜き
発言  りん E-MAIL  - 06/8/30(水) 9:42 -

引用なし
パスワード
   アーバン さん、おはようございます。

>シートへBMP画像を貼付し、その画像と重なるセル範囲を指定して
>必要な部位を目的のセルへコピぺする方法では、セル範囲であるがゆ
>えに大まかな範囲となってしまいます。(.CopyPicture)

図形を選択してコピーしたいというのとは違うんでしょうか?

よくわからないので、とりあえず図形とセルの位置関係に関するマクロ
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=26386;id=excel

【42041】Re:貼付画像の切り抜き
発言  アーバン  - 06/8/30(水) 10:21 -

引用なし
パスワード
   ▼りん さん、おはようございます。早速ありがとうございます。

>図形を選択してコピーしたいというのとは違うんでしょうか?

について、シート上に挿入したBMP画像のうち、必要部位を切り取る
(コピー)意味合いです。
Range().CopyPictureで画像に重なっているセル範囲の内、必要な部位
のセル範囲をコピーすることは出来たのですが、セル高さ、幅を狭めて
方眼にし得られる範囲の細かさを出す工夫をしてみましたが、もっと
細かく、画像加工ソフトでいう四角範囲を切り抜くのと同じ様な意味合い
で、選択とコピーが出来たらと考えております。
範囲選択の方法はどの様でも結構です。例えで、シェイプの四角形の範囲
と記載してみました。
その様なことは出来るでしょうか?

【42042】Re:貼付画像の切り抜き
回答  りん E-MAIL  - 06/8/30(水) 11:16 -

引用なし
パスワード
   アーバン さん、こんにちわ。

>細かく、画像加工ソフトでいう四角範囲を切り抜くのと同じ様な意味合い
>で、選択とコピーが出来たらと考えております。
>範囲選択の方法はどの様でも結構です。例えで、シェイプの四角形の範囲
>と記載してみました。

図形の重なった部分をコピーする方法をいろいろ試して見ましたが、セルの時のようにはうまくいかなかったので、別の方法を考えてみました。

(準備)
図ツールバーを表示して、欲しい部分だけをトリミングし、その図を選択しておく。
以下のマクロを実行。

Sub test()
  Dim pf1 As PictureFormat
  On Error Resume Next
  Set pf1 = Selection.ShapeRange.PictureFormat
  On Error GoTo 0
  '複製を作成
  If Not pf1 Is Nothing Then
   pf1.Parent.Item(1).CopyPicture xlScreen, xlBitmap
   'ペースト先は同じシートのH1
   With Application.ActiveSheet
     .Paste Destination:=.Range("H1")
   End With
  End If
  '元の図のトリミングを解除
  With pf1
   .CropLeft = 0#
   .CropRight = 0#
   .CropTop = 0#
   .CropBottom = 0#
  End With
  Set pf1 = Nothing
End Sub

これで、欲しい部分だけコピーできるようです。

【42044】Re:貼付画像の切り抜き
お礼  アーバン  - 06/8/30(水) 12:26 -

引用なし
パスワード
   ▼りん さん こんにちわ。 
ご回答ありがとうございます。
早速実行してみまして成功しました。
BMPにした図面を挿入し、必要部位をコピーしては貼付して、
標準類のポイントカードを作成するのに多用致します。
ですので、最後の解除もあると何度も繰り返す作業に最適であり、
至れり尽くせりで助かりました。
以前は、画像化工ソフトで予め作成したものを複数作り、単純に挿入
していた為、追加で絵図がほしい時は、再度作成する手間があり、
考えながら、ほしい時切り貼りできる方法は無いかと考えておりました。
以降は、ボタン配置などしてトリミングしては、コピーしての使い方で
やっていこうと思います。
大変たすかりました。
ありがとうございました。

>(準備)
>図ツールバーを表示して、欲しい部分だけをトリミングし、その図を選択しておく。
>以下のマクロを実行。
>
>Sub test()
>  Dim pf1 As PictureFormat
>  On Error Resume Next
>  Set pf1 = Selection.ShapeRange.PictureFormat
>  On Error GoTo 0
>  '複製を作成
>  If Not pf1 Is Nothing Then
>   pf1.Parent.Item(1).CopyPicture xlScreen, xlBitmap
>   'ペースト先は同じシートのH1
>   With Application.ActiveSheet
>     .Paste Destination:=.Range("H1")
>   End With
>  End If
>  '元の図のトリミングを解除
>  With pf1
>   .CropLeft = 0#
>   .CropRight = 0#
>   .CropTop = 0#
>   .CropBottom = 0#
>  End With
>  Set pf1 = Nothing
>End Sub
>
>これで、欲しい部分だけコピーできるようです。

【42047】Re:貼付画像の切り抜き
発言  りん E-MAIL  - 06/8/30(水) 13:02 -

引用なし
パスワード
   アーバン さん、こんにちわ。 
すみません、分岐が間違ってました。
PictureFormatを参照している部分を全部Ifブロック内に入れてください。

>>Sub test()
>>  Dim pf1 As PictureFormat
>>  On Error Resume Next
>>  Set pf1 = Selection.ShapeRange.PictureFormat
>>  On Error GoTo 0
>>  '複製を作成
>>  If Not pf1 Is Nothing Then
>>   pf1.Parent.Item(1).CopyPicture xlScreen, xlBitmap
>>   'ペースト先は同じシートのH1
>>   With Application.ActiveSheet
>>     .Paste Destination:=.Range("H1")
>>   End With
>    '元の図のトリミングを解除 ←Ifブロックの中に入れてください。
>    With pf1
>     .CropLeft = 0#
>     .CropRight = 0#
>     .CropTop = 0#
>     .CropBottom = 0#
>    End With
>>  End If
>>  Set pf1 = Nothing
>>End Sub

【42084】Re:貼付画像の切り抜き(2)
お礼  アーバン  - 06/8/31(木) 12:20 -

引用なし
パスワード
   ▼りん さん こんにちわ。
 
>PictureFormatを参照している部分を全部Ifブロック内に入れてください。

了解しました。ご親切にありがとうございました。早速実施しました。
その後、トリミングについて、絵図に任意の位置と大きさで四角シェイプを
貼付けて終始点の計算から、トリミングできる様にしてみました。
最終的にトリミング値を設定することに変わりは無いのですが、
以前に加工ソフトの四角で切り抜く方が手感が良かったので、四角で囲った
部位がコピーされることで、EXCEL上で絵図加工から標準書作成まで、
一貫してできる様になりました。感謝致します。

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