[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『画像の縮小拡大について』(らん)
マクロで画像を張り付けた際に縦横比を変えずに縮小する方法はありますか (らん)
2007、2010 での設定ですが、 ***.ShapeRange.LockAspectRatio = msoTrue としておいてどうでしょうか。 (Mook)
エクセルの環境が今、手元にないので間違っていたらごめん。 手動にしろ、マクロ処理にしろ、シートに画像が張り付いた時点では縦横比率は固定に設定されていると思う。 なので、シェープ.Height あるいは シェープ.Width いずれかを 拡大したり縮小したりすれば 他方も、それにあわせて拡大縮小されない?
(ぶらっと)
確かに画像はデフォルトが固定でしたね。 (Mook)
質問の仕方がまずかったのではないかとお答えを試してみてそう思いました。
また基本的なことが分かっていないので ***.ShapeRange.LockAspectRatio = msoTrueとしてどうするのか分からない状況です。 また,Shapes.Heighを縮小する際,サイズを指定するんですよね。違うかな・・
やりたいことは,いくつかの図形を張り付けて同じ縮尺で全てを縮小したいのです。 色々検索して下記のようなものを見つけましたが, with Shapes .ScaleHeight 0.8, False .ScaleWidth 0.8, False 思うように縮小拡大はできたのですが,Falseの意味がわかりません。 Trueにすると少しFalseの時より大きくなります。 説明不足でご迷惑をおかけしました。
よろしければ引き続きご教授ください。(らん)
このコードはシートモジュールに書いたのかな? それはさておき、ほんとに、Shapes一括で .ScaleHeight 0.8, False なんかができた? ScaleHeightのヘルプの事例を見ても、1つ1つに対して処理しているけどなぁ? 今、試しにこの形でやってみたらエラーになったよ。 (なお True,False の意味もヘルプに記載されている)
ともあれ、1つずつ処理するにしてもShapesだと画像以外のすべてのものを包含するので(入力規則の▼なんかも)ちょっと乱暴。
また、↑でいったように、いずれか一方だけで処理できるよ。
Sub Sample() Dim pic As Picture
For Each pic In ActiveSheet.Pictures pic.Height = pic.Height * 0.8 Next
End Sub
それと、True/Falseのときの結果の大きさの違いだけど、エクセル上のポイントは、0.25単位で丸められると思う。 フォルダにあった図形がエクセルに貼り付いたときにすでに丸められている。 丸められる前のサイズ * 0.8 を丸めたものと 丸められた後のサイズ * 0.8 を丸めたものとの違いじゃないかな?
(ぶらっと)
Excel2002で確認。何故か縦横比が維持されません。 Excel2010だと問題あまりません。
↓だとうまくいくのですが???
pic.ShapeRange.Height = pic.ShapeRange.Height * 0.8
(マナ)さんの指摘について。 自分でもシェープ. と 上のほうでいっておきながら、Picture つまり DrawingObject に対してセットしてた。 Pic.ShapeRange. が、もともとの意図。すんません。
ただし。
縦横比率については2003でも、維持される。 2002 は、わからないけど。 なので、2003以降ならアップしたコードでも(私の意図とは異なっていたわけだけど)OKなんだよねぇ。
(ぶらっと)
Excel2003(SP3)でも、駄目でした。 縦横比を固定するにチェックは入っているですけど???
今、2003で確認。 やっぱり、縦横比率固定で拡大縮小するには 2003ではDrawingObjectではなく、Shapeに対して おこなう必要があったね。ごめん!! なので、当初の私の意図にあわせて Pic.ShapeRange.Height ですね。
(ぶらっと)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.