[ホーム] > [VBScript FAQ 一覧] > [Excel でダブルクリックで画像を張り付ける (ファイル埋め込み) サンプルコード]

Excel でダブルクリックで画像を張り付ける (ファイル埋め込み) サンプルコード | VBScript / VBA FAQ






Excel でセルをダブルクリックしてそのセルにぴったりサイズの画像を埋め込むサンプルを紹介します。
Excel への画像埋め込みには以下の2通りがあると思います。

(1)画像のリンクをExcelに埋め込み (Excelのサイズは増えない)
(2)画像ファイルそのものの埋め込み (Excelのサイズが増える)

このページでは(2)の方法に関して説明します。

insert メソッドでは埋め込みできない



Excel で画像を埋め込むには insert と addPicture メソッドがあると思います。
しかし現状では insert では LinkToFile を False に設定されてもリンクされてしまいました。
本来ならリンクではなくファイルそのものが埋め込まれるはずです。しかしリンクです。

証拠として元ファイルをエクスプローラから削除するとExcelからは次のエラーとなってしまいます。

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



Excelで埋め込み画像を削除するとリンクエラー



Excel 365 でも Excel 2019 でも同じです。よって画像ファイルをリンクでなく埋め込みたい場合は addPicture メソッドを利用する必要があるようです
大きなファイルでも小さなファイルでも現象は同じです。


実際のサンプルコードは次のとおりです。
insert メソッドとは異なり、addPicture は縦横比率のキープのパラメータ (LockAspectRatio プロパティ) がありません。
よって暫定的に同じサイズで張り付き、後で計算して枠ピッタリにして縦横比率を同じにしています。

サンプル========================================
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Dim pic01 As Variant
Dim spc01 As Object

pic01 = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像を選択してください", , False)
If pic01 = False Then
MsgBox "【エラー】画像の確認に失敗しました。画像が選択されていない、アクセス権がない、不正なファイルなどが考えれます。"
Exit Sub
End If



Set spc01 = (ActiveSheet.Shapes.AddPicture(Filename:=pic01, LinkToFile:=False, SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, Width:=0, Height:=0))

spc01.LockAspectRatio = msoTrue

spc01.ScaleHeight 1, msoTrue
spc01.ScaleWidth 1, msoTrue


spc01.Width = Target.Width
If spc01.Height > Target.Height Then

spc01.Height = Target.Height
spc01.Left = Target.Left + (Target.Width - spc01.Width) / 2

Else

spc01.Top = Target.Top + (Target.Height - spc01.Height) / 2

End If

Set spc01 = Nothing
End Sub


================================================





[ホーム] > [VBScript FAQ 一覧]





(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。
このページはリンクフリーです。(このページへの直接リンクも可能です。)
雑誌等での紹介は特に連絡は不要です。
Copyright(c) tooljp.com 2007-2019