【Excel/VBA】画像挿入でPictures.Insertによるリンク切れ問題の解決法(AddPictureプロパティ)
Excel VBAで画像を挿入する方法としてActiveSheet.Pictures.Insertがありますが、この方法だと画像貼り付け後のファイルをメールなどで他人に送ってしまうとリンク切れで見れなくなるというデメリットがあります。
ActiveSheet.Pictures.Insertとリンク切れ問題
以下のコードは、画像をリンクとして挿入します。画像がExcelファイルに埋め込まれず元の画像ファイルが必要になります。
Dim pic As Picture
Set pic = ActiveSheet.Pictures.Insert("C:\path\image.jpg")
貼り付けた画像が他人から見れない
解決策: Shapes.AddPictureでの画像埋め込み
リンク切れを防ぐためには、画像を埋め込むShapes.AddPictureを使います。これにより、画像ファイルはExcelに保存されリンク不要で表示されます。
Dim ws As Worksheet
Set ws = ActiveSheet
Dim pic As Shape
Set pic = ws.Shapes.AddPicture(fileName:="C:\path\image.jpg", _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=10, _
Top:=10, _
Width:=100, _
Height:=100)
LinkToFile:=msoFalseとSaveWithDocument:=msoTrueにより、画像がファイルに埋め込まれます。
まとめ
Excel VBAで画像を挿入する際、他人とファイルを共有する場合はShapes.AddPictureを使いましょう。ActiveSheet.Pictures.Insertはリンクとして挿入するため、ファイル送信後にリンク切れが発生しやすいですが、AddPictureなら画像が埋め込まれ常に表示されます。共有や保存の際に確実に画像を表示するにはAddPictureが最適です。
スポンサーリンク

