挙動不審な 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 ShapeobjFileName = 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 WithEnd Sub