プロが教える店舗&オフィスのセキュリティ対策術

Excel 2010マクロで挿入した画像に名前が付けられない!
Excel 2002で作成・使用していた画像挿入修正マクロを、Excel 2010で実行したところ、
下記プログラムの下から二行目の「ActiveSheet.Shapes(na11).Name = "ga1"」部分で
「指定したコレクションに対するインデックスが境界をこえています」とのことで
エラー!になります。

na11 = Selection.ShapeRange.ZOrderPosition
ActiveSheet.Shapes(na11).Name = "ga1"

上記の部分のみを、Excel 2010で実行すると正常に作動します。
原因がわかりません。ご指導よろしくお願いいたします。
※下記プログラムの「¥」は文字化けするため、全角に置き換えております。

------------------------------------------------------
' 画像(1)を自動配置する
If Range("AQ18").Value = 0 Then
Else
san = Range("DA17").Value
san2 = Right(san, Len(san) - InStrRev(san, "-") + 1)
d = Left(san, Len(san) - Len(san2))
myPath = pa & "¥" & a & "¥" & a & " " & b & " " & k & "¥" & d & "¥" & d & "-PHOTO" & "¥" & d & "_web"
Range("H42").Select
ActiveSheet.Pictures.Insert(myPath & "¥" & san).Select
' 画像(1)を縮小し、名前を付ける
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Width = size1
Selection.ShapeRange.Rotation = 0#
na11 = Selection.ShapeRange.ZOrderPosition
ActiveSheet.Shapes(na11).Name = "ga1"
End If
--------------------------------------------------

A 回答 (1件)

下記で試してみてください。


ActiveSheet.Pictures.Insert(myPath & "¥" & san).Name = "ga1"

あるいは
With ActiveSheet.Pictures.Insert(myPath & "¥" & san)
.Name = "ga1"
' 画像(1)を縮小し、名前を付ける
.ShapeRange.LockAspectRatio = msoTrue
.Width = size1
.Rotation = 0#
End With
    • good
    • 0
この回答へのお礼

xls88 様 ありがとうございました。大変参考になりました。
Excel 2010で挿入した画像に名前が付けられました。

' 画像を挿入して名前(ga1)を付け、サイズを変更する--------------
With ActiveSheet.Pictures.Insert(myPath & "¥" & san)
.Name = "ga1"
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Width = size1
End With

上記のように書き換えました。(Excel 2010、Excel 2002、Excel 2003)すべて
正常に作動しました。

お礼日時:2010/07/06 19:06

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

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