- ベストアンサー
Excelで写真張り付けマクロを修正する方法
- Excelのマクロを使用して写真を選択し、セルに貼り付ける方法を修正したい場合、以下の方法を試してみてください。
- 現在のマクロでは、縦向きの写真を挿入した際にセルの上下から画像がはみ出してしまう問題が発生しています。この問題を解決するためには、画像のリサイズと配置を調整する必要があります。
- 修正方法としては、まず画像の縮尺を変えずにリサイズするために、縦横比を保ちつつセル内に収まるように調整します。そして、画像をセンターに配置するために、セルの中心座標を計算して画像を移動させます。この修正を行うことで、縦向きの写真を挿入しても画像がはみ出すことなくセル内に収まるようになります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
参考に Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Cancel = True '画像選択コマンド myF = Application.GetOpenFilename("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False) If myF = False Then MsgBox "編集する場合はF2を押下してください。" Exit Sub End If '画像データの再構築 For Each mySp In ActiveSheet.Shapes myAD1 = mySp.TopLeftCell.MergeArea.Address myAD2 = Target.Address If myAD1 = myAD2 Then mySp.Delete Next 'リサイズして画像の貼り付け Set mySp = ActiveSheet.Shapes.AddPicture(Filename:=myF, _ LinkToFile:=False, SaveWithDocument:=True, Left:=Target.Left, _ Top:=Target.Top, Width:=0, Height:=0) mySp.ScaleHeight 1, msoTrue mySp.ScaleWidth 1, msoTrue '縮尺を変えずにリサイズ mySp.LockAspectRatio = msoTrue ' 縦横比の固定 If (mySp.Width / Target.Width) >= (mySp.Height / Target.Height) Then mySp.Width = Target.Width mySp.Top = (Target.Height - mySp.Height) / 2 + Target.Top Else mySp.Height = Target.Height mySp.Left = (Target.Width - mySp.Width) / 2 + Target.Left End If Set mySp = Nothing End Sub
お礼
すごく理解しやすい回答でした✨ お陰でスムーズに対応が完了しましたので本当に感謝しています!