挙動不審な Excel2010

 またトラブル。後輩に渡したExcel2010のあるマクロでのこと。もとはといえば、限りなくバグに近い → 「Excel 2010 で Pictures.Insert メソッドを使用して図をワークシートに挿入すると図がリンク オブジェクトとして挿入される」 の症状。

ここに書いてあるサンプルコードとおんなじコードを書いたのに、

  • 貼り付けた時点で、解像度が落ちる(コード上でサイズを一時的に変更しているが、本来縮小しているだけで、解像度は落ちないはず。)
  • 4:3のサイズのはずが、1:1になっちゃう。50x50のサイズにした段階で、scaleheight が聞かなくなってる。

という症状に。

らちがあかなかったが、当座の回避策として、一時的に変更するサイズを50x50にせず640x480にしたら、普通通りに動くようになった。この間、Excel の再起動をしていたりするので、何が悪かったかはわからないけど、、、不気味だ。家の2010と会社の2010だと、挙動が一致しないことがある。

Sub InsPict()

Dim objFileName As String
Dim objShape As Shape

objFileName = Application.GetOpenFilename _
("Pictures (*.gif; *.jpg; *.bmp; *.tif),*.gif; *.jpg; *.bmp; *.tif", , "画像選択ダイアログ")

'アクティブセルの位置に図の幅と高さを 50 ポイントに指定して画像を挿入します

Set objShape = ActiveSheet.Shapes.AddPicture( _
Filename:=objFileName, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=Selection.Left, _
Top:=Selection.Top, _
Width:=50#, _
Height:=50#)

'図のサイズを元のサイズに戻します

With objShape
.ScaleHeight 1!, msoTrue
.ScaleWidth 1!, msoTrue
End With

End Sub