Excel'deki resimleri isimlendirerek dışarıya çıkartma

Katılım
4 Nisan 2006
Mesajlar
20
Arkadaşlar merhaba, bir kamu kurumunda görev yapıyorum. Bizim yıllardır excelde tutmuş olduğumuz personele ilişkin bir excel tablosu var. Birinci sütunda her hücrede kişinin fotoğrafı, yandaki ikinci sütunda ise her hücrede ilgilinin TC kimlik numarası var. Yeni bir sisteme geçeceğiz ve bizden tüm personelin (yaklaşık 2800 kişinin) TC kimlik no şeklinde isimlendirilmiş fotoğraflarını istediler. Normalde excelde fotoğrafları export etmek kolay ve bir çok yolu var bildiğiniz üzere. Ancak export edilen o fotoğrafları yandaki hücrede bulunan Tc kimlik no ile adlandırarak export etme noktasında sıkıntı yaşıyoruz. Buna uygun bir makro yazarak yardımcı olabilir misiniz acaba. Örnek dosya ektedir. (A2 hücresindeki fotoğraf klasöre çıkartıldığında fotoğrafın ismi B2 hücresindeki TC kimlik no olacak - "12345678912.jpeg" şeklinde) İlgilenen veya çözüm üreten arkadaşlara şimdiden çok teşekkür ediyorum. Saygılarımla.

Örnek dosya:
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Resimler, bilgisayarda C:\TestFolder klasörüne kaydedilir....


C#:
Sub Test()
'   Haluk - 29/03/2021
    Dim objTemp As Object
    Dim chtMyChart As Chart
   
    For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
      Range("A" & i).Copy
      Set objTemp = ActiveSheet.Shapes.AddShape(1, 1, 1, 1, 1)
      objTemp.Select
      ActiveSheet.Paste
      objTemp.Delete
     
      With Selection
          .CopyPicture 1, 2
          Set chtMyChart = ActiveSheet.ChartObjects.Add(1, 1, .Width, .Height).Chart
          With chtMyChart
              .ChartArea.Border.LineStyle = xlNone
              .Paste
              .Export "C:\TestFolder\" & Range("B" & i).Text & ".jpg"
              .Parent.Delete
          End With
      .Delete
      End With
    Next
   
    MsgBox "Resimler aktarıldı..."
    Set objTemp = Nothing
End Sub
.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Haluk Hocam,
Resimler boş olarak geliyor.
Saygılarımla
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Birşeyi yanlış yapıyorsunuz ama neyi, bilmiyorum....

.
 

Ekli dosyalar

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba,
Gönderdiğiniz dosyanın hiçbir noktasına dokunmadım. Diğerleri de örnekteki gibi.
Saygılarımla
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bilemiyorum.... bende bir problem yok.

.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Makinemi kapatıp açtım, durum değişmedi. F8 ile takip ettiğimde oluşan ektedir.
Lütfen israr ediyor diye düşünmeyin. Nedenini anlamaya çalışıyorum.
Saygılarımla
 

Ekli dosyalar

Ömer

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

Kodları çalıştırınca bende de boş resimler geldi. Yalnız F8 ile tek tek yapınca resimler doğru geliyor. Hata almadım.

"Win10 Pro 64 Bit, Excel 2016 Tr 64 Bit"
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ömer bey, dediğim gibi .... maalesef bir fikrim yok.

MS Excel veya Windows'un saçmalığı herhalde ..... İkisini de kullanmamak lazım aslında.

Bendeki klasörün durumu böyle;


Capture.PNG



.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ömer Bey, problem sizdeki Excel versiyonundan kaynaklı gibi geliyor... Tevfik Beyin profilinde versiyon 2010 gözüküyor ama, eklediği ekran görüntüsü başka bir versiyon.

Her neyse.... aşağıdaki versiyon kontrolu yapılmış revizyon, problemi çözebilir, benim deneme şansım yok.

C#:
Sub Test()
'   Haluk - 29/03/2021
    Dim objTemp As Object
    Dim chtMyChart As Chart
  
    For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
      Range("A" & i).Copy
      Set objTemp = ActiveSheet.Shapes.AddShape(1, 1, 1, 1, 1)
      objTemp.Select
      ActiveSheet.Paste
      objTemp.Delete
    
      With Selection
          .CopyPicture 1, 2
          Set chtMyChart = ActiveSheet.ChartObjects.Add(1, 1, .Width, .Height).Chart
          
          If Int(Val(Application.Version)) >= 16 Then
            chtMyChart.Activate
          End If
          
          With chtMyChart
              .ChartArea.Border.LineStyle = xlNone
              .Paste
              .Export "C:\TestFolder\" & Range("B" & i).Text & ".jpg"
              .Parent.Delete
          End With
      .Delete
      End With
    Next
  
    MsgBox "Resimler aktarıldı..."
    Set objTemp = Nothing
End Sub

.
 

Ömer

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

Son verdiğiniz kodları denediğimdeki hata resmini paylaşıyorum.
226430




Ayrıca sizin ilk kodları aşağıdaki gibi revize ederek denedim bende çalıştı.
Kod:
Sub test1()

    Dim son As Long, n As Shape, chtMyChart As Object

    son = Range("B" & Rows.Count).End(xlUp).Row

    For Each n In ActiveSheet.Shapes
        If Not Intersect(n.TopLeftCell, Range("A2:A" & son)) Is Nothing Then
            n.Select
            Selection.CopyPicture
            Set chtMyChart = ActiveSheet.ChartObjects.Add(1, 1, n.Width, n.Height).Chart
            With chtMyChart
                .ChartArea.Select
                .Paste
                .Export "C:\TestFolder\" & n.TopLeftCell.Offset(0, 1).Text & ".jpg"
                .Parent.Delete
            End With
        End If
    Next

End Sub
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Ömer Hocam,
Sizin makro bende de çalıştı. Hem size hem de Haluk hocama çok teşekkür ederim.
Saygılarımla
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,181
Excel Vers. ve Dili
Excel-2003 Türkçe
Haluk Bey'in ilk verdiği kod (excel 2003-32 bit) sorunsuz çalıştı.
 
Üst