非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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:=msoFalseSaveWithDocument:=msoTrueにより、画像がファイルに埋め込まれます。

 

まとめ

Excel VBAで画像を挿入する際、他人とファイルを共有する場合はShapes.AddPictureを使いましょう。ActiveSheet.Pictures.Insertはリンクとして挿入するため、ファイル送信後にリンク切れが発生しやすいですが、AddPictureなら画像が埋め込まれ常に表示されます。共有や保存の際に確実に画像を表示するにはAddPictureが最適です。

 

スポンサーリンク

 - Excel, VBA