Resim silme

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Aşağıdaki Makro ile; Başka bir dosyadan personel ismine göre sayfaya resim getiriyorum Buraya kadar sorun yok
Yalnız; Sayfada başka bir resim varsa makro çalıştığı zaman sayfadaki bu resimleri de siliyor.
Ve, her personel ismini değiştirdiğimde, kaydetmek gerekiyor, kaydetmezsem makro ikinci kez çalışmıyor.
Yardımlarınız için şimdiden teşekkür ediyorum. İyi çalışmalar.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim resim As Shape, resimyolu As String
Dim evn As Object, klasor As Object, res As Object
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path & "\PERSONEL_RESİMLERİ")
For Each resim In ActiveSheet.Shapes
resim.Delete
Next
For Each res In klasor.Files
If res.Name = Range("b2").Value & ".jpg" Then
resimyolu = ThisWorkbook.Path & "\PERSONEL_RESİMLERİ\" & res.Name
Range("H2").Select
ActiveSheet.Pictures.Insert(resimyolu).Select
With Selection.ShapeRange
.ScaleWidth 1.2, 0, 0
.ScaleHeight 1.01, 0, 0
End With
End If
Next res
Range("b3").Select
Set evn = Nothing
Set klasor = Nothing
Set res = Nothing
Set resim = Nothing
resimyolu = vbNullString
End Sub
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

For Each resim In ActiveSheet.Shapes
resim.Delete
Next

Yukarıdaki kodların yerine aşağıdaki gibi bir yapı kurarsanız sadece A1:A10 arasındaki resimleri siler.
Kod:
For Each resim In ActiveSheet.Shapes
    If Not Intersect(resim.TopLeftCell, Range("A1:A10")) Is Nothing Then
        resim.Delete
    End If
Next
 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Merhaba,

For Each resim In ActiveSheet.Shapes
resim.Delete
Next

Yukarıdaki kodların yerine aşağıdaki gibi bir yapı kurarsanız sadece A1:A10 arasındaki resimleri siler.
Kod:
For Each resim In ActiveSheet.Shapes
    If Not Intersect(resim.TopLeftCell, Range("A1:A10")) Is Nothing Then
        resim.Delete
    End If
Next
İlginiz İçin Teşekkürler Ama maalesef olmadı
 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Sadece h2 hücresi
Merhaba,

For Each resim In ActiveSheet.Shapes
resim.Delete
Next

Yukarıdaki kodların yerine aşağıdaki gibi bir yapı kurarsanız sadece A1:A10 arasındaki resimleri siler.
Kod:
For Each resim In ActiveSheet.Shapes
    If Not Intersect(resim.TopLeftCell, Range("A1:A10")) Is Nothing Then
        resim.Delete
    End If
Next
Yukarıdaki kodda; Sadeece h2 hücresine getirilen resmi silmek için revize yapabilirmiyiz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,555
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Resim_Sil()
    Dim Resim As Object
    For Each Resim In ActiveSheet.Shapes
        If Not Intersect(Resim.TopLeftCell, Range("H2")) Is Nothing Then
            Resim.Delete
        End If
    Next
End Sub
 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Option Explicit Sub Resim_Sil() Dim Resim As Object For Each Resim In ActiveSheet.Shapes If Not Intersect(Resim.TopLeftCell, Range("H2")) Is Nothing Then Resim.Delete End If Next End Sub



Private Sub Worksheet_Change(ByVal Target As Range)
Dim resim As Shape, resimyolu As String
Dim evn As Object, klasor As Object, res As Object
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path & "\PERSONEL_RESİMLERİ")

" For Each resim In ActiveSheet.Shapes
resim.Delete
Next "

For Each res In klasor.Files
If res.Name = Range("b2").Value & ".jpg" Then
resimyolu = ThisWorkbook.Path & "\PERSONEL_RESİMLERİ\" & res.Name
Range("H2").Select
ActiveSheet.Pictures.Insert(resimyolu).Select
With Selection.ShapeRange
.ScaleWidth 1.2, 0, 0
.ScaleHeight 1.01, 0, 0
End With
End If
Next res
Range("b3").Select
Set evn = Nothing
Set klasor = Nothing
Set res = Nothing
Set resim = Nothing
resimyolu = vbNullString
End Sub

Yukarıda " İşaretli olan kodları aktif sayfada, sadece H2 hücresindeki resimi silecek şekilde revize etmek istiyorum.
Yukarıda verilen kodlar maalesef olmadı, Birde; Personel isimlerini değiştirdiğimde sayfayı kaydetmeden resimler gelmiyor.
Yardımlarınız ve ilginiz için tekrar tyeşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,555
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben denediğimde oluyor. Demek ki sizin dosyanızda bilmediğimiz bir durum var.

Bunun için örnek dosyanızı paylaşmalısınız.
 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resim As Shape, resimyolu As String
Dim evn As Object, klasor As Object, res As Object
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.getfolder(ThisWorkbook.Path & "\PERSONEL_RESİMLERİ")

" For Each resim In ActiveSheet.Shapes
resim.Delete
Next "

For Each res In klasor.Files
If res.Name = Range("b2").Value & ".jpg" Then
resimyolu = ThisWorkbook.Path & "\PERSONEL_RESİMLERİ\" & res.Name
Range("H2").Select
ActiveSheet.Pictures.Insert(resimyolu).Select
With Selection.ShapeRange
.ScaleWidth 1.2, 0, 0
.ScaleHeight 1.01, 0, 0
End With
End If
Next res
Range("b3").Select
Set evn = Nothing
Set klasor = Nothing
Set res = Nothing
Set resim = Nothing
resimyolu = vbNullString
End Sub

Yukarıda " İşaretli olan kodları aktif sayfada, sadece H2 hücresindeki resimi silecek şekilde revize etmek istiyorum.
Yukarıda verilen kodlar maalesef olmadı, Birde; Personel isimlerini değiştirdiğimde sayfayı kaydetmeden resimler gelmiyor.
Yardımlarınız ve ilginiz için tekrar tyeşekkürler.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,555
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eklediğiniz dosya şifreli.

Lütfen forum kurallarını okuyunuz.

 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Eklediğiniz dosya şifreli.

Lütfen forum kurallarını okuyunuz.

Çok özür diliyorum Şifre: Konmer
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,555
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eski kodu silip aşağıdaki kodu deneyiniz.

C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Resim As Variant, Yol As String, Seperator As String
    
    If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
    
    For Each Resim In ActiveSheet.Shapes
        If Resim.Type = 11 Then
            If Not Intersect(Resim.TopLeftCell, Range("H2")) Is Nothing Then
                Resim.Delete
            End If
        End If
    Next
    
    Seperator = Application.PathSeparator
    Yol = ThisWorkbook.Path & Seperator & "PERSONEL_RESİMLERİ" & Seperator
    Resim = Yol & Target.Value & ".jpg"
    
    If Dir(Resim) <> "" Then
        Set Resim = ActiveSheet.Pictures.Insert(Resim)
        
        With Range("H2:L16")
            Resim.ShapeRange.LockAspectRatio = msoFalse
            Resim.Left = .Left
            Resim.Top = .Top
            Resim.Height = .Height
            Resim.Width = .Width
        End With
        
        Set Resim = Nothing
    End If
End Sub
 

6729626

Altın Üye
Katılım
31 Aralık 2005
Mesajlar
131
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
27-01-2025
Eski kodu silip aşağıdaki kodu deneyiniz.

C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Resim As Variant, Yol As String, Seperator As String
   
    If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
   
    For Each Resim In ActiveSheet.Shapes
        If Resim.Type = 11 Then
            If Not Intersect(Resim.TopLeftCell, Range("H2")) Is Nothing Then
                Resim.Delete
            End If
        End If
    Next
   
    Seperator = Application.PathSeparator
    Yol = ThisWorkbook.Path & Seperator & "PERSONEL_RESİMLERİ" & Seperator
    Resim = Yol & Target.Value & ".jpg"
   
    If Dir(Resim) <> "" Then
        Set Resim = ActiveSheet.Pictures.Insert(Resim)
       
        With Range("H2:L16")
            Resim.ShapeRange.LockAspectRatio = msoFalse
            Resim.Left = .Left
            Resim.Top = .Top
            Resim.Height = .Height
            Resim.Width = .Width
        End With
       
        Set Resim = Nothing
    End If
End Sub
ÇOK TEŞEKKÜRLER, SAĞOLUN.
 
Üst