• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2010でのマクロによる画像貼付について)

Excel2010でのマクロによる画像貼付について

このQ&Aのポイント
  • エクセル2010で画像を貼り付ける際に表示できないエラーが発生する問題について
  • エクセル2010のマクロでPictures.InsertではなくShapes.Addを使用する必要がある
  • 画像の選択後、貼り付けとサイズ調整を行うことで問題を解決できる

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

一度Insertで挿入して、W,Hサイズだけ取得し、画像をけし、AddPictureで再度挿入すればいいです。 かなり適当に修正したので、あとは、ご自分で修正して下さい。 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) '===============起動の合図 If ActiveCell.FormulaR1C1 = "画像" Then Cancel = True '===============画像選択 SSS = Application.GetOpenFilename _ ("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) If SSS = False Then MsgBox "画像を選択してください(終了)" Exit Sub End If '===============画像の貼り付け Set CCC = ActiveSheet.Pictures.Insert(SSS) W = CCC.Width H = CCC.Height CCC.Delete Set CCC = ActiveSheet.Shapes.AddPicture(SSS, msoFalse, msoTrue, Target.Top, Target.Left, Target.Width, Target.Height) '===============タテヨコの縮尺を保持 HH = Target.Height / H WW = Target.Width / W If HH > WW Then CCC.Height = H * 0.99 CCC.Width = Target.Width * 0.99 Else CCC.Height = Target.Height * 0.99 CCC.Width = W * 0.99 End If '===============中央へ調整 HH2 = (Target.Height / 2) - (CCC.Height / 2) WW2 = (Target.Width / 2) - (CCC.Width / 2) CCC.Top = Target.Top + HH2 CCC.Left = Target.Left + WW2 Set CCC = Nothing End If End Sub

subemibe
質問者

お礼

お忙しいところご教授いただきありがとうございました。

その他の回答 (1)

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

Set CCC = ActiveSheet.Pictures.Insert(SSS) を、以下の様に書き換えてみて下さい。 Set CCC = ActiveSheet.Shapes.AddPicture(SSS, msoFalse, msoTrue, Target.Top, Target.Left, Target.Width, Target.Height)

subemibe
質問者

補足

「リンクされたイメージを表示できません。ファイルが移動または削除されたか、名前が変更された可能性があります。リンクに正しいファイル名と場所が指定されていることを確認してください。」 というメッセージは出なくなりました。 ありがとうございました。 それで、元の画像の縮尺を変えたくないのですが、(画像サイズがまちまちのため) 何か手段はありますか? お手数おかけして申し訳ありません<m(__)m>

関連するQ&A