Excel 2010 で Pictures.Insert メソッドを使用して図をワークシートに挿入すると図がリンク オブジェクトとして挿入される

適用対象: Excel 2010

現象


Microsoft Excel 2010 で Pictures.Insert メソッドを使用して図をワークシートに挿入すると、図がリンク オブジェクトとして挿入されます。

また、リンク元となる元の図を移動、または削除した場合や、図の名前を変更した場合には、挿入された図がリンク枠として表示され、リンク枠内に以下のエラー メッセージが表示されます。


リンクされたイメージを表示できません。ファイルが移動または削除されたか、名前が変更された可能性があります。リンクに正しいファイル名と場所が指定されていることを確認してください。

補足 :
[マクロの記録] 機能を使用して図を挿入した場合は Pictures.Insert メソッドが使用されます。したがって、[マクロの記録] 機能を使用して作成されたマクロを実行して図を挿入すると同様の現象が発生します。なお、[マクロの記録] 機能を使用せずに手動で図を挿入した場合には、この現象は発生しません。

回避策


図をリンク オブジェクトではなく図として挿入するには、Pictures.Insert メソッドではなく、Shapes.Add メソッドを使用してください。

注 : Shapes.Add メソッドはサイズを指定する引数を省略することができないため、元の図のサイズを保持したまま図を挿入することができません。元の図のサイズで挿入したい場合は、図を任意のサイズで挿入後に Shape.ScaleHeight メソッドおよび Shape.ScaleWidth メソッドを使用して元のサイズに戻してください。



Shapes.Add メソッドを使用したサンプル コード :
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

状況


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細


問題の再現手順

  1. Excel 2010 を起動します。
  2. 以下のコードを入力し、Pictures.Insert メソッドを使用して図 (ここでは c:\test.jpg) を挿入します。
    Sub Sample() ActiveSheet.Pictures.Insert("c:\test.jpg") End Sub
  3. 図を挿入した Excel ファイルを任意の名前で保存します。
  4. test.jpg ファイルを削除します。
  5. 手順 3 で保存したファイルを開きます。

結果

図がリンク枠として表示され、リンク枠内に以下のエラー メッセージが表示されます。

リンクされたイメージを表示できません。ファイルが移動または削除されたか、名前が変更された可能性があります。リンクに正しいファイル名と場所が指定されていることを確認してください。