[[20121012102353]] 『画像の色の変更をVBAで』(うつぽっぽ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『画像の色の変更をVBAで』(うつぽっぽ)
Windows7 Excel2007にて
人口を比較する為に地区毎に色を別々に付けたいので
色の変更の仕方を探しています

人口の多さでの場合分けは出来ているのですが
png形式で貼りつけた画像の色を変更しようとすると
透過色部分だけしか塗りつぶす事しか出来ませんでした

手動では画像を選択して図ツールの色の調整という所で画像部分だけ色が変わるので
どうにかしたら出来るんじゃないかな?と思い探しているのですが・・・

お聞きしたい事は
・図の部分だけの色の変更は可能か
・図をフリーフォーム等の図形に変えることは可能か
この二点です。

下の部分が出来れば恐らく.Fill.ForeColorにて色を変えれるのではと、、、
分かりづらい点もあるかもしれませんがよろしくお願いします


 2007では図形関連のマクロ記録ができなかったのかな?
 2010で図を選択して、その線の色を変更する操作をしてマクロ記録すると以下のコードが生成される。
 これを参考にしてチューニングしてね。

 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
    ActiveSheet.Shapes.Range(Array("Picture 1")).Select
    With Selection.ShapeRange.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
    End With
 End Sub

 >図をフリーフォーム等の図形に変えることは可能か

 ん? 具体的には?

 (ぶらっと)

 ↑ あっ、ごめん。枠線じゃなく背景色?
 図を選択して背景色を変更する操作をマクロ記録したものが以下。

 Sub Macro2()
 '
 ' Macro2 Macro
 '

 '
    ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
    With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
        .Solid
    End With
 End Sub

 (ぶらっと)

ぶらっと様

迅速な対応ありがとうございます

 > 2007では図形関連のマクロ記録ができなかったのかな?
そうですね、記録出来ないんでずっと検索エンジンとにらめっこでした・・・

 > コードについて

頂いたコードで試してみると図の背景色ではなくて図の後ろの四角形?ですかね
その色が変わってしまいました、、、
Fill.ForeColorって前景色の塗りつぶしの事ですよね?
最初図形ツールで作った三角形で試してみたら出来たのですが
図で挿入した画像には何故か後ろ側が変わってしまうんですよね、、、

 >図をフリーフォーム等の図形に変えることは可能か

画像を張り付けている状態だと出来ない可能性があるので
いっそのこと画像を図形として扱えないかな。ということです
いい言い方が見つからない・・・
フリーフォームの線を地区の線に出来るか、、、かな?

説明下手で申し訳ないです・・・
よろしくお願いします

(うつぽっぽ)


 シートに取り込んだ画像(たとえばカラー写真)の色そのものを変えたいということ?
 追記)そのあたりはど素人なのでエキスパートさんの回答をいただきたいんだけど
   どうなんだろうか?お絵かきソフトや写真加工ソフトに取り込んで、そこで色をかえて
   画像ファイルとして保存して、それを取り込みなおすということじゃない?
   VBAで、そんな高度なことはできないのでは?(APIとか使えば何とかなるのかな?)

 (ぶらっと)

ぶらっと様
 そうですね、画像自体の色を変えたいということになりますね。
 図の部分だけの色という表現が少し悪かったですね、、、申し訳ないです。
 
 単純な例をあげるならば都道府県を一枚一枚作って
 その画像の色を変えたいってことですね
 excel上で画像を選択し上部メニューの図ツール内の調整 色の変更
 という所で出来たので可能なのかな?と思ったのですがやはり難しいのですかね、、、
 御解答ありがとうございます。

(うつぽっぽ)


 >excel上で画像を選択し上部メニューの図ツール内の調整 色の変更 

 あぁ、なるほど。(上でコメントしたとおり画像なんかは、ほとんど扱わない素人なので、この機能そのものを使ったことがなかった)

 で、これをマクロ記録したら以下のコードが生成された。参考になるのかどうか?

 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
    ActiveSheet.Shapes.Range(Array("Picture 1")).Select
    Selection.ShapeRange.PictureFormat.ColorType = msoPictureWatermark
 End Sub

 (ぶらっと)

 ちなみに、ヘルプで ColorType を見ると以下のものが利用可能みたい。

 ピクチャに適用される色の変換を指定します。
 名前          値   説明 
 msoPictureAutomatic   1  既定の色変換 
 msoPictureBlackAndWhite 3  白黒変換 
 msoPictureGrayscale   2  グレースケール変換 
 msoPictureMixed     -2  混在変換 
 msoPictureWatermark   4  透かし変換 

 追記)でも、いろんな色に変えてみたけど、その部分のコードはマクロ記録されないみたいだねぇ・・・

 (ぶらっと)

ぶらっと様
 迅速な対応ありがとうございます!
 
 >コードについて
 恐らくこれであっているはずなのですが、
 これをつかった場合でも背景の四角形が塗られてしまうんですよね、、、

 =の後での設定の仕方があるのですかね?調べてみたいと思います。
 親身に教えてくださりありがとうございます!

 追記)周りの四角形が塗られる原因がソースの消し忘れでした、、、
   恐らく後は色の設定の仕方さえ分かればすぐに出来そうです!
   本当に助かりました、ありがとうございます!
(うつぽっぽ)

 その画像を選択して数式バーには何が表示される?
 おそらくペイントが立ち上がって画像処理しているのでは?

 だとすると、VBAからでは操作はむりではないかと。
 GDI系のAPI使って画像操作とか言ったことになるかと。
 (とおりすぎ)

 To とおりすぎさん

 色を変えた画像を選択しても数式バーは空白ですね。
 でも、おそらくは(ペイントなのかどうかはわかりませんが)特殊な画像処理モジュールと内部で連携して
 処理しているのでしょうね。

 (ぶらっと)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.