Excel VBAでセルをダブルクリックして画像を挿入し、他PCでも表示する方法

Visual Basic

Excelで特定のセルをダブルクリックして画像を挿入するVBAは便利ですが、通常のPictures.Insertでは画像のリンク情報だけが保存され、他のPCでファイルを開くと表示されないことがあります。本記事では、埋め込み画像として保存する方法と、全PCで表示できるVBAの書き方を解説します。

問題の原因

従来のActiveSheet.Pictures.Insertメソッドは、画像ファイルへのリンクを作成します。そのため、挿入した画像ファイルが保存されているPC以外では画像が表示されません。リンク先が存在しない場合に”表示されません”と出るのです。

解決方法:画像を埋め込む

解決策は、画像をWorkbookに埋め込み、リンクではなくファイル内に保存することです。これにはShapes.AddPictureメソッドを使い、リンクをFalseに設定します。

例。

Dim pic As ShapeSet pic = ActiveSheet.Shapes.AddPicture(Filename:=fd.SelectedItems(1), _LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)

この方法で挿入した画像はExcelファイル内に保存されるため、他のPCでも画像が表示されます。

ダブルクリックイベントで実装する例

Worksheet_BeforeDoubleClickイベントを使い、対象セルを指定して画像を挿入する例。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Cancel = TrueIf Not Intersect(Target, Union(Range("C8"), Range("O8"), Range("AA8"))) Is Nothing ThenDim fd As FileDialogSet fd = Application.FileDialog(msoFileDialogFilePicker)With fd.Title = "Select an Image File".Filters.Clear.Filters.Add "Image Files", "*.GIF; *.JPG; *.JPEG; *.BMP; *.PNG; *.TIF", 1If .Show = -1 ThenDim pic As ShapeSet pic = ActiveSheet.Shapes.AddPicture(Filename:=.SelectedItems(1), _LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, _Left:=Target.Left, Top:=Target.Top, Width:=Target.Width, Height:=Target.Height)End IfEnd WithEnd IfEnd Sub

注意点

  • 挿入する画像はサイズをTargetセルに合わせるとレイアウトが整います。
  • 複数PCで利用する場合でも、画像はExcelファイル内に埋め込まれるため安心です。
  • Shapes.AddPictureのLinkToFileは必ずmsoFalseにしてください。

まとめ

他PCでも画像を表示させるには、Pictures.InsertではなくShapes.AddPictureを使い、リンクではなく埋め込みとして挿入することがポイントです。これにより、ダブルクリックで画像を挿入するVBAが、どのPCでも正常に表示されるようになります。

コメント

タイトルとURLをコピーしました