良く分かりませんが、第一引数の
msoFalse を msoTrue にすればどうなるでしょうか?
Selection.ShapeRange.ScaleHeight 0.43, msoTrue, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 0.48, msoTrue, msoScaleFromTopLeft
下記マクロも試してください。
補正値は調整(加減、大小)してください。
Sub test2()
Dim pic As Picture
Dim pth As String
Dim pname As Variant
Dim rng As Range
Dim i As Integer
pth = "C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\"
pname = Array("2-小", "2-大")
Set rng = Range("B24:N54, O9:X54") '挿入開始セル範囲
For i = 0 To UBound(pname)
Set pic = ActiveSheet.Pictures.Insert(pth & pname(i) & ".emf")
With pic
.Left = rng.Areas(i + 1).Left - 0.75
.Top = rng.Areas(i + 1).Top - 0.75
.ShapeRange.LockAspectRatio = msoFalse '縦横比を無視
.Height = rng.Areas(i + 1).Height + 1.5
.Width = rng.Areas(i + 1).Width + 1.5
End With
Next i
End Sub
>回答番号:No.1 この回答への補足
質問1)
ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-小.emf").Select
With Selection
.Left = Range("B24").Left
.Top = Range("B24").Top
End With
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft
ActiveSheet.Pictures.Insert("C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\2-大.emf").Select
With Selection
.Left = Range("O9").Left
.Top = Range("O9").Top
End With
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft
質問2)
次のシートをActiveにする
Sheet("Sheet2").Activate
質問3)
下記コードで数値を変えてみる
Selection.ShapeRange.IncrementLeft 0.75
Selection.ShapeRange.IncrementTop 0.75
Selection.ShapeRange.ScaleHeight 0.43, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft
下記マクロを試してみてください。
詳細がよく分からないので挿入位置とか適当に決めています。
Sub test1()
Dim pic As Picture
Dim pth As String
Dim pname As Variant
Dim rng As Range
Dim i As Integer
pth = "C:\Users\note\Desktop\テスト材料\jpg変換済み\材料\"
pname = Array("2-小", "2-大")
Set rng = Range("B2:H12") '挿入開始セル範囲
For i = 0 To UBound(pname)
Set pic = ActiveSheet.Pictures.Insert(pth & pname(i) & ".emf")
With pic
.Left = rng.Left
.Top = rng.Top
.ShapeRange.LockAspectRatio = msoTrue '縦横比維持
.Height = rng.Height '高さ基準
'.Width = rng.Width '幅基準
End With
Set rng = rng.Offset(12) '挿入位置を12行下方にずらす
Next i
End Sub
セルを指定すればどうでしょうか。
Dim pic As String
pic = "C:\Users\○○○\Pictures\AAA.jpg"
With ActiveSheet.Pictures.Insert(pic).ShapeRange
.Left = Range("B2").Left
.Top = Range("B2").Top
End With
一度、現状のマクロを提示していただくことはできないでしょうか。
お礼
ありがとうございます。 >msoFalse を msoTrue は同結果でした。 再度教えていただいたマクロでOKでした。とても時間短縮でき大感激です。本当にありがとうございました。