14歳の自分に衝撃の事実を告げてください

回転させた図を任意の場所に配置させたいのですが、EXCEL2007になってからShapeRange.Top/Leftに負の値が設定できなくなってしまったようで、任意の場所に配置できなくなってしまいました。
幸いIncrementTopやIncrementLeftには負の値が設定可能なようなのですが、Excel2003の場合とExcel2007の場合で動作が違うことには変わりなく、Excel2003ではTop/Leftの設定だけで済んだものがExce2007ではTop/Leftである程度の基準位置を設定したあと、さらにIncrementTop/IncrementLeftで補正の必要があるように思います。
こんなやり方をしないと図の配置はできないのでしょうか?

具体的には、マクロにて横長や縦長の長方形の図形を挿入し、位置を指定するのですが、図を回転した場合でもTop/Leftは、回転前の図のTop/Leftを設定するので、横長の図を90度回転させ縦長にした場合には、Leftに0を設定しても、回転後の結果の図は左端にはよっておらず、(元の図の横幅-元の図の縦幅)÷2の分だけ空いてしまいます。
なので、EXCEL2003では求められた空きの分だけLeftに負の値を設定するだけでよかったのですが、EXCEL2007ではLeftに負の値が設定できなくなっており、左端に寄せる事が不可能になっています。

以下、現象確認のための簡単なサンプルのマクロを示します。

'縦長の場合です
ActiveSheet.Pictures.Insert("C:\TEMP\BITMAP.BMP").Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 700
Selection.ShapeRange.Width = 100
Selection.ShapeRange.Rotation = 90#
Selection.ShapeRange.Top = Range("B2").Top
Selection.ShapeRange.Left = Range("B2").Left

'横長の場合です
ActiveSheet.Pictures.Insert("C:\TEMP\BITMAP.BMP").Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 100
Selection.ShapeRange.Width = 700
Selection.ShapeRange.Rotation = 90#
Selection.ShapeRange.Top = Range("B2").Top
Selection.ShapeRange.Left = Range("B2").Left

内容はなんでもいいのでBITMAP.BMPという図のファイルを用意してください。
上記マクロは"B2"のセル位置が図形の左上を原点とするようにしたいのですが、全く違うところに図が配置されます。

A 回答 (1件)

こんにちは。


駄案に近いですが、一度 .CopyPicture してみるとか^ ^;

Sub try()
  With ActiveSheet
    With .Pictures.Insert("C:\TEMP\BITMAP.BMP")
      With .ShapeRange
        .LockAspectRatio = msoFalse
        .Height = 700
        .Width = 100
        .Rotation = 90#
      End With
      .CopyPicture
      .Delete
    End With
    .Paste '.Range("B2")'直接指定なら以下不要
  End With
  With Selection.ShapeRange
    .Top = .Parent.Range("B2").Top
    .Left = .Parent.Range("B2").Left
  End With
End Sub
    • good
    • 0
この回答へのお礼

end-uさん、こんにちは
ご回答ありがとうございます。
その通りなんですよ、回転させた後にコピーもしくは切り取りして貼り付けなおした場合には、図の原点が回転後の図の左上になるため、見たままの配置が可能なんですが、お察しの通り、貼り付けなおしているので図形書式で回転指定した角度が0になってしまいます。またご存知だとは思いますが、EXCELで図を回転させると図の品質が低下してしまうので、元に戻す事が出来ない状態です。
いろいろ調べた結果、.Top / .Leftである程度の位置に移動させてから、IncrementTopとIncrementLeftに必要となる負の値を指定し位置の補正をする事で目的の位置に移動させることができました。
どうやらEXCEL2007からは.Top/.Leftに負の値を設定することができなくなったようです。

お礼日時:2008/03/14 15:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報