Resim Uzantısını Birden Fazla Uzantı Olarak Çekme

  • Konuyu başlatan Konuyu başlatan selimtyg
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Kısa Açıklama

Resim Uzantısını Birden Fazla Uzantı Olarak Çekme isimli başlıkta, ilgili işlemlere dair detaylar yer almaktadır.
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Aşağıdaki bu kodda .jpg , .png , .jpeg veya .gif olan uzantıları da aynı anda çekmesini istiyorum ama olmadı
"*.jpg; *.png; *.jpeg" olarak denedim olmadı çekmedi. Birde resim boyutlandıması yaptığımız ürünü nasıl ortalama yapabilirim.

ResimDosyaYolu = ActiveWorkbook.Path & "\IMG\" & Range("b" & i) & ".jpg"



'worksheette bir değişiklik oldugunda bu kısım çalışıyor
Private Sub Worksheet_Change(ByVal Target As Range)

'değişiklik b sutunundamı olmuş diye kontrol et, değilse direk olarak fonksiyondan çık
If Intersect(Target, [b:b]) Is Nothing Then Exit Sub


'herhangi bir hata oluşursa Çıkış labelına git
On Error GoTo Çıkış:

' ilk olarak yüklü olan Resimleri silelim
ActiveSheet.DrawingObjects.Delete


Dim ResimDosyaYolu As String
Dim Resim As Object

'b deki 2 ile 1237 arasındaki satırları kontrol edip resim ataması yapıyoruz, siz burayı isteğinize göre artırabilirsiniz
For i = 2 To 1237
'aktif sayfanın path bilgisini alıp, seçilen ürün idyi sonuna ekliyoruz ve dosyayı alıyoruz
ResimDosyaYolu = ActiveWorkbook.Path & "\IMG\" & Range("b" & i) & ".jpg"

'dosya yok ise hataya düşmemek için aşağıdaki kontrolü yapıyoruz.
If DosyaVarmi(ResimDosyaYolu) Then
ResimDosyaYolu = ActiveWorkbook.Path & "\IMG\" & Range("b" & i) & ".jpg"
Else
ResimDosyaYolu = ActiveWorkbook.Path & "\IMG\urunyok2.jpg"
End If



'resmi oluşturuyoruz.
Set Resim = ActiveSheet.Pictures.Insert(ResimDosyaYolu)
'Resmi boyutlandırıyoruz
With Range("k" & i)
Resim.Top = .Top
Resim.Left = .Left
Resim.Height = 60
Resim.Width = 100
End With

Next i

Çıkış:
 
Resim yoksa diğer formatları kontrol edip en son resimyok resmini çağırabilir.

İlgili kısmı aşağıdaki kodla değiştirip deneyiniz.
Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(10 satır)
 
urunyok2.jpg dosyası var mı? Ve DosyaVarmi kodlarını da paylaşabilir misiniz?

Kodları da not olmadan deneyiniz. DosyaVarmi fonksiyonundan false değeri dönüyor galiba
Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(9 satır)
 
Hata alıyor musunuz hala? Eğer alıyor iseniz dosyalarınızın gizli bilgiler içermeyecek bir benzerini buraya yükleyiniz dosya üzerinde çalışalım. Bir kaç öneri yaparım lakin örnek yapı olmadan çalışmak pek istediğim bir durum değil.

Ayrıca öneri olarak da on error yapısını kullanmamanız. Yoksa nerede hata aldığınızı bulmanız zorlaşır. Onun yerine hatalı olacak durumları belirleyip ona göre kod çözümü üretmek daha faydalı olacaktır.

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(27 satır)
 
Ekli dosyayı inceleyiniz.

Kodunuz da bir kaç revize yaptım.
- B sütununda değişiklik yapıldığında tüm resimler silinip yeniden yükleniyordu. Bu da gereksiz bilgisayarın yorulması demek. Bu nedenle resimler yüklenirken yüklendiği satırın ismini verdim. Değişiklik olduğunda ilgili satırdaki resmi direk silebilir hale getirdim kodları.

- Bu şekilde for döngüsünden kurtulduk. Width ve height koşullarını aynı anda ikisini verilmiyor. Biri verildiğinde diğeri otomatik oranları koruyacak şekilde büyüyüp küçülüyor. Bende sadece width değeri vererek hücre yüksekliğini aşıp aşılmadığını kontrol ettirdim. Eğer aşıyor ise yükseklik 100 değerinde sabitlenmiş olacak.

1603833596767.webp



İlgili kod yapısı:
Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(32 satır)
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
Çözüm
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst