2017-08-30 1 views
0

私はマージされたセルに画像を配置する2つの異なるサブタイプを持っています。ファイルの選択方法は、サイズにかかわらず、マージされたセルの高さと幅の両方に合わせて画像を歪ませます。ただし、貼り付けのバージョンは、幅が&の高さにはなりません。プログラミングコード内で最後に使用されたのはこれだけです。サブペーストを調整して幅と高さに合わせて画像を歪ませるにはどうしたらいいですか?マージされたセルバグに収まるように画像貼り付け

Sub FromFile() 

    Dim sFileName As String 
    Dim oShape As Shape 

    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub 

    sFileName = Application.GetOpenFilename(_ 
     FileFilter:="Images (*.gif;*.jpg;*.png), *.gif;*.jpg;*.png", _ 
     FilterIndex:=1, _ 
     Title:="Insert Picture", _ 
     ButtonText:="Insert", _ 
     MultiSelect:=False) 
    If sFileName = "False" Then Exit Sub 

    With ActiveCell.MergeArea 
     ActiveSheet.Shapes.AddPicture _ 
       Filename:=sFileName, _ 
       LinkToFile:=msoFalse, _ 
       SaveWithDocument:=msoTrue, _ 
       Left:=.Left, _ 
       Top:=.Top, _ 
       Width:=.Width, _ 
       Height:=.Height 
    End With 


End Sub 


Public Sub Paste() 
Dim p As Picture 

    Dim s As Shape, rng As Range 
    Set rng = Range("MyMerge") 

    For Each s In ActiveSheet.Shapes 
     If Intersect(rng, s.TopLeftCell) Is Nothing Then 
     Else 
      s.Delete 
     End If 
    Next s 

Worksheets("Report").Range("MyMerge").Select 
With ActiveCell.MergeArea 
    Set p = .Parent.Pictures.Paste 
    p.Left = .Left 
    p.Top = .Top 
    p.Height = .Height 
    p.Width = .Width 
End With 
End Sub 
+0

おそらく、サイズを変更する前に 'p.Shaperange.lockaspectratio = False'を追加しますか? – Rory

+0

@Roryこれはうまくいきました! Shaperange.lockaspectratioを共有していただきありがとうございます。私はそれがオプションであるかどうかわかりませんでした。私はあなたに報いることができるように答えの形であなたのコメントを配置してください。ありがとうございました。 – Amasian21

+0

.Parent.Pictures.Paste <~~貼り付ける前に画像をコピーする必要があります。 –

答えて

0

追加:画像のサイズを変更する前に、

p.Shaperange.lockaspectratio = False 

を、あなたが独立して高さと幅の両方を変更することができるはずです。

関連する問題