Sayfadaki Klasörden Çekilmiş Resimleri Makro ile Silme

Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Arkadaşlar,

Ekteki dosyada, B sütununa, C diskindeki Sorular isimli klasör içindeki .jpg formatındaki resimlerin adını girince, A sütununa o resim geliyor.

Eklenen resimleri işim bittikten sonra bir makro ile silmek istiyorum ancak bir türlü makro oluşturamadım. Makro kaydetmeyi denedim, hiç bir şey kaydetmiyor. Klasördeki resimleri silip makro kaydettim, yine bir şey kaydetmedi.

Yardımcı olabilir misiniz?

Not: Ekteki dosya forumdan alınmıştır.
A sütununa resim eklenebilmesi için C diskinde .jpg formatında resimlerin olduğu Sorular isimli bir klasörün olması gerekiyor.
 

Ekli dosyalar

Son düzenleme:

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kodlarınızı aşağıdaki şekilde değiştirin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
Dim p As Object, t As Double, l As Double, w As Double, h As Double

ResimDosya = "C:\Sorular" & "\" & Target.Value & ".jpg"
'ResimDosya = "C:\Sorular" & "\" & Target.Offset(0, 1).Value & ".jpg"
If Dir(ResimDosya) = "" Then Exit Sub
Set p = ActiveSheet.Pictures.Insert(ResimDosya)

With Cells(Target.Row, Target.Column - 1)
    t = .Top
    l = .Left
    w = .Offset(0, .Columns.Count).Left - .Left
    h = .Offset(.Rows.Count, 0).Top - .Top
End With

With p
    .Top = t
    .Left = l
    .Width = w
    .Height = h
End With

Set p = Nothing
Kill ResimDosya
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Benzer kodları size bir çok kez yazmıştım
kod:

Kod:
Sub resimleri_sil()
Dim s1
Set s1 = Sheets(ActiveSheet.Name)
Dim Picture As Object
For Each Picture In s1.Shapes
If TypeName(s1.Shapes(Picture.Name).OLEFormat.Object) = "Picture" Then
Picture.Delete
End If
Next Picture
End Sub
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Kodlarınızı aşağıdaki şekilde değiştirin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
Dim p As Object, t As Double, l As Double, w As Double, h As Double

ResimDosya = "C:\Sorular" & "\" & Target.Value & ".jpg"
'ResimDosya = "C:\Sorular" & "\" & Target.Offset(0, 1).Value & ".jpg"
If Dir(ResimDosya) = "" Then Exit Sub
Set p = ActiveSheet.Pictures.Insert(ResimDosya)

With Cells(Target.Row, Target.Column - 1)
    t = .Top
    l = .Left
    w = .Offset(0, .Columns.Count).Left - .Left
    h = .Offset(.Rows.Count, 0).Top - .Top
End With

With p
    .Top = t
    .Left = l
    .Width = w
    .Height = h
End With

Set p = Nothing
Kill ResimDosya
End Sub
Çok sağolun.

Silme işi nasıl olacak?
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Benzer kodları size bir çok kez yazmıştım
kod:

Kod:
Sub resimleri_sil()
Dim s1
Set s1 = Sheets(ActiveSheet.Name)
Dim Picture As Object
For Each Picture In s1.Shapes
If TypeName(s1.Shapes(Picture.Name).OLEFormat.Object) = "Picture" Then
Picture.Delete
End If
Next Picture
End Sub
O zaman bir kez daha teşekkür ederim. :)
Kod çalıştı.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Ben klasörden silme olarak anlamıştım.
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit Hocam,

Bu çalışmanız bende çalışmıyor, kodları görebiliyorum ama gözlemleyemiyorum.
Bu çalışma her türlü ihtiyacıma cevap olurdu yoksa ki bu çalışmaya başlarken ilk indirdiğim çalışma bu oldu. Hâlâ duruyor ama gözlemleyemediğim için pek istifade edemedim.
İlgili link deki dosya ile ilgili sunu söylüyüm
dosyanın hemen yanında (Resimler) klasörü olmalı ve içindede resimler olmalı
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
Benzer kodları size bir çok kez yazmıştım
kod:

Kod:
Sub resimleri_sil()
Dim s1
Set s1 = Sheets(ActiveSheet.Name)
Dim Picture As Object
For Each Picture In s1.Shapes
If TypeName(s1.Shapes(Picture.Name).OLEFormat.Object) = "Picture" Then
Picture.Delete
End If
Next Picture
End Sub
Halit Hocam,

Bu kodu bir buton ile "bes1", "sekiz1", "on1" sayfalarındaki resimleri aynı anda silecek şekilde nasıl değiştirebiliriz?
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
şunu bir dene

Kod:
Sub resimleri_sil()

son = 3
ReDim sayfalar(son)
sayfalar(1) = "bes1"
sayfalar(2) = "sekiz1"
sayfalar(3) = "on1"

Dim Picture As Object

For i = 1 To son
For Each Picture In Sheets(sayfalar(i)).Shapes
If TypeName(Sheets(sayfalar(i)).Shapes(Picture.Name).OLEFormat.Object) = "Picture" Then
Picture.Delete
End If
Next Picture
nexti
End Sub
 
Katılım
3 Haziran 2017
Mesajlar
797
Excel Vers. ve Dili
2007, 32
Altın Üyelik Bitiş Tarihi
08/06/2018
şunu bir dene

Kod:
Sub resimleri_sil()

son = 3
ReDim sayfalar(son)
sayfalar(1) = "bes1"
sayfalar(2) = "sekiz1"
sayfalar(3) = "on1"

Dim Picture As Object

For i = 1 To son
For Each Picture In Sheets(sayfalar(i)).Shapes
If TypeName(Sheets(sayfalar(i)).Shapes(Picture.Name).OLEFormat.Object) = "Picture" Then
Picture.Delete
End If
Next Picture
nexti
End Sub
Halit Hocam çalıştı, çok teşekkür ederim.
 
Üst