Excel VBA 質問スレッド №2118 (解決済)

画像が指定したセルにおさまらない

投稿者 : ももネクター     投稿日時 : 2025/05/27(Tue) 13:48:50     OS : Windows 11     EXCEL : Excel 2021
素人です。
iphoneで撮影した縦型の画像(3024×4032)がセルから縦がはみ出ます。
(3120×4160の場合ははみ出ない)
解決策を教えてください。

-------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim i As Long
    Dim j As Long
    Dim FileName As Variant
    Dim rX As Double, rY As Double
    
    If ActiveCell.Value Like "ダブルクリックで*" Then
    
        FileName = Application.GetOpenFilename( _
            FileFilter:="画像ファイル,*.bmp;*.jpg;*.gif", _
            MultiSelect:=True)
        If Not IsArray(FileName) Then
            Exit Sub
        End If
        For Each sp In ActiveSheet.Shapes
        If sp.TopLeftCell.Column = 1 Then
            sp.Delete
        End If

        Next
        j = 1
        For i = LBound(FileName) To UBound(FileName)
        
        With ActiveSheet.Shapes.AddPicture( _
            FileName:=FileName(i), _
            LinkToFile:=False, _
            SaveWithDocument:=True, _
            Left:=Selection.Left, _
            Top:=Selection.Top, _
            Width:=-1, _
            Height:=-1)
            
            '縦横比を固定
            .LockAspectRatio = msoTrue
            'セルにあわせて移動やサイズ変更
            .Placement = xlMoveAndSize
            '一旦、元のサイズに戻す
            .ScaleHeight 1, msoTrue
            .ScaleWidth 1, msoTrue
            
        rX = Target.Width / .Width
        rY = Target.Height / .Height
        If rX > rY Then
            .Height = .Height * rY
        Else
            .Width = .Width * rX
        End If

        'セルの中央(横方向/縦方向の中央)に配置
        .Left = Target.Left + (Target.Width - .Width) / 2
        .Top = Target.Top + (Target.Height - .Height) / 2

        End With
        
        j = j + 1
        Next i

        Cancel = True

    End If
    
End Sub

-------------------------------------------------

スポンサーリンク
[返信 1] Re : 画像が指定したセルにおさまらない
投稿者 : てらてら     投稿日時 : 2025/05/27(Tue) 19:52:19
こんにちは。
提示されたコードで試してみましたが正常に動作するようです。

iPhoneで撮影した縦型の画像という事なので、jpgでしたら横向き情報が付いているのかもしれません。
ペイントで保存し直すと治るかもしれません。
https://help-vba.com/jpg-rotate/

ちなみに横向き情報が付いた画像ではセルからはみ出ました。

外していたらごめんなさい。

[返信 2] Re : 画像が指定したセルにおさまらない
投稿者 : ももネクター     投稿日時 : 2025/05/28(Wed) 10:39:05
てらてらさん
ペイントで保存することで解決しました。
ありがとうございました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-04 12:51:12 )
タイトルとURLをコピーしました