Sicile Göre Klasörden Resim Çağırma

  • Konuyu başlatan Konuyu başlatan teyadih
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
14 Eki 2019
Mesajlar
857
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba arkadaşlar. Tüm bilgisayarlarımızda microsoft olmadığı için pek makro kullanmıyorum. Ancak bizi çok büyük bir dertten kurtaracak personel albümü için kullandığımız makro ile ilgili talebime ilişkin örnek klasörü ekte gönderiyorum. Makro kullanmadığım için umarım anlatabilmişimdir, Teşekkür ederim
 

Ekli dosyalar

Çözüm
İlgili sayfaların zoom oranlarıyla ilgili bir sıkıntı ihtimaline karşılık,
dosyadaki kodu aşağıdakiyle değiştirerek bir kez daha deneyin isterseniz.

VBA:
Sub TEYADIH_HUCREYE_RESIM_EKLE()
Set dosya = CreateObject("Scripting.FileSystemObject")
Set g = ThisWorkbook.Sheets("Giriş")
g.Range("S4:S" & Rows.Count).ClearContents
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
zaman = Timer
For Each shf In ThisWorkbook.Sheets
    sayfaismi = shf.Name
    If Not shf.[F1].Value = Empty And shf.Name <> "Giriş" And shf.Name <> "Liste" Then
        sayfaadi = shf.Name
        shf.Activate
        ilkoran = ActiveWindow.Zoom
        ActiveWindow.Zoom = 100
        shf.Rows.Hidden = False...
Merhaba Sayın @teyadih .

Fotoğrafları, hücrelere eklemek yerine ilgili hücrelere "HÜRE AÇIKLAMASI" olarak eklemek daha pratik olur.
Fotoğrafların belgeyle aynı dizinde olduğu varsayıldı.

Bunun için;
-- İlgili sayfada uygun bir alana bir şekil/metin kutusu/düğme ekleyin,
-- ALT+F11 tuşlarına basarak VBA ekranını açın,
-- Belgede mevcut kodların tümünü silin,
-- İlgili sayfanın kod bölümüne aşağıdaki ikinci kodu yapıştırın.
-- Sayfafya eklediğiniz şekil/metin kutusu/düğmeye fareyle sağ tıklayıp MAKRO ATAyı seçin,
-- Açılacak küçük ekrandan aşağıdaki ikinci makronun adını seçerek işlemi onaylayın.

Artık; eklediğiniz düğmeye fareyle tıklayarak fotoğrafların eklenmesini sağlayabilirsiniz.

Ayrıca; ilgili sayfanın SAYFA YAPISInda aşağıdaki görselde yer alan kısmı "SAYFADA GÖRÜNTÜLENDİĞİ GİBİ" şeklinde ayarlarsanız
yazdırırken de sorun yaşamazsınız.

Açılışta GİRİŞ sayfasının aktif sayfa olması için de aşağıdaki birnci kodu, VBA ekranında
ThisWorkbook (BuÇalışmaKitabı) bölümüne yapıştırın.

Belgeyi de *xlsb, *.xlsm veya *xls gibi makro çalıştırabileceğiniz bir türde kaydettiğinizden emin olun.

VBA:
Private Sub Workbook_Open()
    Sheets("Giriş").Activate
End Sub

VBA:
Sub ACIKLAMAYA_RESIM_EKLE()
Set dosya = CreateObject("Scripting.FileSystemObject")
Set s1 = Sheets("1.İd.")
s1.Rows.Hidden = False
For sat = 3 To s1.Cells(Rows.Count, 2).End(3).Row Step 3
    For sut = 2 To 10 Step 2
        With s1.Cells(sat, sut)
            If .Text <> "" Then
                yol_isim_uzanti = [B][COLOR=rgb(132, 53, 52)]ThisWorkbook.Path[/COLOR][/B] & "\" & .Text & ".jpg"
                resim_varmi = dosya.FileExists(yol_isim_uzanti)
                Set aciklama_metni = .Comment
                If resim_varmi = True Then
                    .ClearComments
                    Set aciklama = .AddComment
                    aciklama.Shape.Fill.UserPicture yol_isim_uzanti
                    With .Comment.Shape
                        .Width = Cells(sat, sut).Width - 2: .Height = Cells(sat, sut).Height - 2
                        .Top = Cells(sat, sut).Top + 1: .Left = Cells(sat, sut).Left + 1
                    End With
                    .Comment.Visible = True
                End If
            End If
        End With
    Next
    If Not say > 0 Then s1.Rows(sat - 1 & ":" & sat + 1).Hidden = True
    say = 0
Next
MsgBox "Resimler hücre açıklamalarına eklendi..", vbInformation, "..:: Ömer BARAN ::.."
End Sub

1588631522899.webp


.
 
Merhaba sayın Baran. Bir arkadaştan yardım alarak da uyguladım ama sonuç alamadım malesef. Uyguladığım ilişkin örnek dosyayı gönderiyorum. Bakabilir misiniz? size zahmet

https://s4.***/server10/zncdw7/Album.rar.html
 
Sayın @teyadih .

İşlemin birden fazla sayfada uygulanacağından söz edilmemişti.
Ayrıca kodun sadece bir Modul'de yer alması yeterli olduğundan; kodu sadece Module2'de yer alıyor.
Belgeyi RAR'dan çıkartıp, fotoğraflarla aynı dizine kaydettikten sonra düğmeye tıklayarak kodu çalıştırabilirsiniz.
Kod eklediğim belgeye uygulandı ve sayfadaki düğmeyle ilişkilendirildi, kulanıma hazır.

Kodun yeniden düzenlenmiş hali
(tüm sayfalar taranır, F1 hücresi boş olmayan sayfalarda arama, fotoğraf ekleme işlemi yapılır)
aşağıdaki gibi.

CSS:
Sub ACIKLAMAYA_RESIM_EKLE()
Set dosya = CreateObject("Scripting.FileSystemObject")
Set g = ThisWorkbook.Sheets("Giriş")
g.Range("S4:S" & Rows.Count).ClearContents
For Each shf In ThisWorkbook.Sheets
    If Not shf.[F1].Value = Empty Then
        shf.Rows.Hidden = False
        shf.Cells.ClearComments
        For sat = 3 To shf.Cells(Rows.Count, 2).End(3).Row Step 3
            For sut = 2 To 10 Step 2
                With shf.Cells(sat, sut)
                    If .Text <> "" Then
                        yol_isim_uzanti = ThisWorkbook.Path & "\" & .Text & ".jpg"
                        resim_varmi = dosya.FileExists(yol_isim_uzanti)
                        If resim_varmi = False Then
                            yol_isim_uzanti = ThisWorkbook.Path & "\YOK.jpg"
                            gsat = WorksheetFunction.Max(4, g.Cells(Rows.Count, "S").End(3).Row + 1)
                            g.Cells(gsat, "S") = shf.[F1] & " - " & shf.Cells(sat, sut).Value & " - " & shf.Cells(sat + 1, sut)
                        End If
                        Set aciklama_metni = .Comment
                        .ClearComments
                        Set aciklama = .AddComment
                        aciklama.Shape.Fill.UserPicture yol_isim_uzanti
                        With .Comment.Shape
                            .Width = shf.Cells(sat, sut).Width - 2: .Height = shf.Cells(sat, sut).Height - 2
                            .Top = shf.Cells(sat, sut).Top + 1: .Left = shf.Cells(sat, sut).Left + 1
                        End With
                        .Comment.Visible = True
                    Else: say = say + 1
                    End If
                End With
            Next
            If say = 5 Then shf.Rows(sat - 1 & ":" & sat + 1).Hidden = True
            say = 0
        Next
    End If
Next:   g.Columns("S").AutoFit
MsgBox "Resimler hücre açıklamalarına eklendi..", vbInformation, "..:: Ömer BARAN ::.."
End Sub

.
 

Ekli dosyalar

Teşekkür ederim sayın Baran elinize sağlık. Sayı değiştiğinde önceki sayıdan az ise önceki eklenen resimleri kaldırmıyor. Size zahmet örnek dosyaya bakabilir misiniz?

https://s4.***/server10/e17kpe/Album.rar.html
 
Sayın @teyadih .

Belge, yeniden gözden geçirildi, eski belge yerine bu cevap ekindeki belgeyi kullanın.
6 numaralı cevaptaki kod da bu belgedeki koda göre güncellendi.
Fotoğrafı olmayanlar için, bu mesaj ekindeki YOK.webp isimli fotoğrafı, fotoğraflarınızın bulunduğu dizine kaydedin.

Belgedeki kodun çalışma sistemi:
-- F1 hücresi dolu olan sayfalarda işlem yapılır.
-- Fotoğraf ekleme işlemi başlarken, varsa önceki resimler (hücre açıklamaları) silinir, ardından var/yok kontrolüne göre fotoğraf ekleme işlemi yapılır.
-- Sicil Bilgisi dolu olan ama fotoğrafı olmayanlar için, yukarıda belirttiği YOK.webp görüntüsü kullanılır.
-- Fotoğraf için ayrılmış bir satırdaki hücrelerin tümü boşsa, bu satırın 1 önceki, kendisi ve 1 sonraki satır gizlenir.
-- Fotoğrafı olmayanlar GİRİŞ sayfası S sütununa listelenir.

.
YOK.webp
 

Ekli dosyalar

Merhaba sayın Baran sizin ve forumdaki arkadaşların Ramazan bayramı mübarek olsun.
Emekleriniz için tekrar teşekkür ederim elinize sağlık. Belge son haliyle tamam hepsini yükledim sorunsuz çalıştı.
Sadece ilk örnek dosya için yazdığınız hangi sayfada kapatılırsa kapatılsın açtığımızda GİRİŞ sayfasının açılması kodu eklenmemiş
Ancak daha önce öngöremediğim 2 istek daha ortaya çıktı sayın Baran. Örnek dosyada belirttiklerimi de ekleyebilirsek takip açısından sıkıntı kalmayacak. Tekrar teşekkür ederim her şey için.

Konu sahibinin isteği üzerine, örnek dosyaya ilişkin bağlantı tarafımca silinmiştir. Ömer BARAN 26.05.2020 00:03

.
 
Giriş sayfasının açılmasıyla ilgili kod ve açıklama 2 numaralı cevapta var.
Ortaya çıkan yeni ihtiyaçların ne olduğuna dair bir açıklama göremedim.
Belgede, hangi sayfa, hangi alan, istek nedir?

.
 
Sayın @teyadih .

Bu konu açılış mesajına ilişkin kodlamalarda;
-- Liste sayfası hiç kullanılmıyor.
-- Giriş sayfası sadece S sütunu kullanılıyor.
-- Diğer sayfalarda işlem yapılıyor (F1 hücresi dolu olan sayfalar)
-- Bu işlemler sırasında da adet/unvan vs kontrolü yapılmıyor.
Kodlama basitçe şöyle; F1 hücresi dolu olan sayfalarda, 3'üncü satırdan başlayarak 3 satırlık satır ritimi ve
B sütunundan başlayarak da 2 sütünluk sütun ritimine göre SAYI olan hücrelerde işlem yapılıyor ve bu SAYI
ile aynı isme sahip fotoğraf varsa bunu açıklamaya eklemek.

Yani, yeni isteğinizle mevcut fotoğraf ekleme kodlaması arasında herhangi bir bağlantı/ortak nokta yok.
Bu yeni istekleriniz için tamamen ayrı bir kodlama yapılması gerekecek.
Bu kod, işlemin tetiklenmesi bakımından mevcut fotoğraf ekleme makrosuna bağlanabilir tabi ama
belirttiğim gibi bu yeni işlem için yeni bir makro oluşturacak veya formül ile çözüm bulunacak.

.
 
Liste sayfasında;
-- K4 hücresine (adeti 10'dan fazla olanlar için sıra numarası elde edilir)
=EĞER(VE(TOPLA.ÇARPIM(--($F$4:$F4&$D$4:$D4=F4&D4))=1;TOPLA.ÇARPIM(($F$4:$F$64=F4)*($D$4:$D$64=D4))>10);MAK($K$3:K3)+1;"")
-- L4 hücresine (mükerrer sicil numaraları için sıra numarası elde edilir)
=EĞER(VE(EĞERSAY($B$4:B4;B4)=1;EĞERSAY($B$4:$B$64;B4)>1);MAK($L$3:L3)+1;"")
Giriş sayfasında da bu sıra numuraları üzerinden istediğiniz veriler çekilebilir.

.
 
Merhaba sayın Baran nasılsınız? Mükerrer kayıtlar için verdiğiniz formülü uygulayıp yardımcı alan ile Giriş sayfası P sütununa aldım
Belgedeki açılan fotoğraf alanından fazla olanları tespit etmek için ise bir şeyler yaptım ama tam olarak beceremedim. Ekli dosyada bahsettiğim şekilde yapabilir miyiz? acaba bakabilir misiniz?
 

Ekli dosyalar

Biraz zor oldu ama yardımcı alan kullanarak belgedeki açılan fotoğraf alanından fazla olanları tespit etmek için formül işini hallettim sayın Baran. Bununla birlikte tamamen kullanmaya başladığımızda bir sorun ile karşılaşmaz isek albüm tamamlanmış oldu. Her şey için teşekkür ederim.
 
Merhaba sayın Baran nasılsınız. Sicil ile klasörden resim çağırmayla ilgili makro tamam elinize sağlık bizi büyük bir dertten kurtardınız. Daha öncede bahsettiğim gibi tüm bilgisayarlarda microsoft olmadığından önceki belgeyi farklı kaydet ile web formatına çevirip o şekilde paylaşıyorduk. Ancak anladığım kadarıyla yazmış olduğunuz makro resimleri açıklama ekle formatında eklendiği için web formatına çevirdiğimizde resimleri göstermiyor. Bu şekilde olabileceğini öncesinde tahmin edemedim kusura bakmayın. Size zahmet resim ekleme formatını değiştirerek web formatına çevirdiğimizde de resimleri gösterecek şekilde düzenleyebilir misiniz dosyayı.

Örnek dosyayı gönderiyorum. Teşekkür ederim.

Kod:
https://dosya.altervista.org/download.php?file=8b4ce62702a214b3a0ffc42ac449cb8d']http://dosya.altervista.org/download.php?file=8b4ce62702a214b3a0ffc42ac449cb8d
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt