Merhabalar; ekli dosyada ki resim butonunu tıkladığımda seçmiş olduğum 1 veya 1 den fazla resim birleştirilerek ana sayfa ve resim sayfasına geliyor. Tekrar resim butonundan resim seçip eklediğimde bir önceki eklenen resimleri ve sayfalardaki (anasayfa ve resim) tüm image nesnelerini de siliyor. Benim istediğim resim eklediğimizde bir önceki eklenen resimlerin silinmesi sayfadaki diğer resimlerin kalması .Şimdiden yardımlarınız için teşekkür ederim.
https://dosyam.org/Zng/RESİM_BİRLEŞTİR_(1).xlsm
https://dosyam.org/Zng/RESİM_BİRLEŞTİR_(1).xlsm
Kod:
Sub PicturesInsertMultiMerge()
Dim Pic As Object, File As Variant, Sht As Worksheet
Dim RngArr, RngArr1 As Range, FlCnt&, SmFl&
ChDrive Environ("SystemDrive"): ChDir Environ("UserProfile") & "\Desktop"
Set Sht = Sheets("RESİM"): Set RngArr = Sht.[C12:V50]
Set s1 = Sheets("ANA SAYFA"): Set RngArr1 = s1.[m5:p16]
File = Application.GetOpenFilename( _
"Resim Dosyaları (*.jfif;*.jpg;*.jpeg;*.png;*.bmp),*.jpg;*.jpeg;*.png;*.bmp ;*.jfif" & _
",Tüm Dosyalar (*.*),*.*", , "Resim Dosyası Seçin...", , True)
If Not IsArray(File) Then Exit Sub
For Each Pic In Sht.Shapes
If Pic.Type <> 1 Then
Sht.Shapes(Pic.Name).Delete
End If
Next Pic
For Each Pic1 In s1.Shapes
If Pic1.Type <> 1 Then
s1.Shapes(Pic1.Name).Delete
End If
Next Pic1
SmFl = UBound(File)
For FlCnt = 1 To SmFl Step 1
On Error GoTo ExitSub
Set Pic = Sht.Pictures.Insert(File(FlCnt))
With Pic
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlFreeFloating
.Width = IIf(SmFl < 3, RngArr.Width, IIf(SmFl Mod 2 And SmFl = FlCnt, RngArr.Width, RngArr.Width / 2))
.Height = RngArr.Height / IIf(SmFl > 2, (SmFl - ((SmFl + 1) Mod 2) + 1) / 2, 1) * IIf(SmFl = 2, 0.5, 1)
.Top = RngArr.Top + (.Height * (FlCnt - ((FlCnt - 1) Mod 2) - 1) / 2) + IIf(SmFl = 2 And SmFl = FlCnt, .Height, 0)
.Left = RngArr.Left + (.Width * ((FlCnt - 1) Mod 2)) - IIf(SmFl = 2 And SmFl = FlCnt, .Width, 0)
With .ShapeRange.Line 'çerçeve
.Visible = msoTrue 'çerçeveyi göster
.ForeColor.RGB = 16777515 'çerçeve rengi
.Weight = 3 'çerçeve kalınlığı
End With
End With
Set Pic1 = s1.Pictures.Insert(File(FlCnt))
With Pic1
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlFreeFloating
.Width = IIf(SmFl < 3, RngArr1.Width, IIf(SmFl Mod 2 And SmFl = FlCnt, RngArr1.Width, RngArr1.Width / 2))
.Height = RngArr1.Height / IIf(SmFl > 2, (SmFl - ((SmFl + 1) Mod 2) + 1) / 2, 1) * IIf(SmFl = 2, 0.5, 1)
.Top = RngArr1.Top + (.Height * (FlCnt - ((FlCnt - 1) Mod 2) - 1) / 2) + IIf(SmFl = 2 And SmFl = FlCnt, .Height, 0)
.Left = RngArr1.Left + (.Width * ((FlCnt - 1) Mod 2)) - IIf(SmFl = 2 And SmFl = FlCnt, .Width, 0)
With .ShapeRange.Line 'çerçeve
.Visible = msoTrue 'çerçeveyi göster
.ForeColor.RGB = 16777515 'çerçeve rengi
.Weight = 3 'çerçeve kalınlığı
End With
End With
Next FlCnt
ExitSub:
Set Pic = Nothing: Set Sht = Nothing: Set File = Nothing
End Sub