Özellik ikonu

LoadPicture

İndirme izni yok

Genel Bakış

LoadPicture (LoadPicture işlevi), diskteki bir resim dosyasını belleğe yükleyen ve bir resim nesnesi olarak geri veren VBA işlevidir. Dönen nesne, UserForm üzerindeki Image denetiminin ya da sayfaya eklenmiş ActiveX Image denetiminin Picture özelliğine atanır. Böylece resim, tasarım zamanında değil kod çalışırken ve dosya adına göre değiştirilebilir.

Söz dizimi​

İşlevin genel biçimi şöyledir:
VBA 2 satır
Set nesne = LoadPicture(DosyaAdi, [Boyut], [RenkDerinligi], [X], [Y])
Denetim.Picture = LoadPicture(DosyaAdi)
  • DosyaAdi: Yüklenecek resim dosyasının tam yolu ve adıdır. Boş metin ("") verilirse denetimdeki resim temizlenir.
  • Boyut: İsteğe bağlıdır. Yalnızca simge (ico) ve imleç (cur) dosyalarında anlamlıdır; istenen simge boyutunu belirler. Değerler 0 (küçük), 1 (büyük, varsayılan), 2 (kabuk küçük), 3 (kabuk büyük) ve 4 (özel) olarak bilinir. Excel VBA'da bu değerlerin sabit adları her zaman tanınmayabilir, bu yüzden sayısal değerleri kullanın.
  • RenkDerinligi: İsteğe bağlıdır. Yalnızca simge ve imleç dosyalarında kullanılır. 0 varsayılan, 1 tek renk, 2 VGA renk, 3 tam renk anlamına gelir.
  • X, Y: İsteğe bağlıdır. Boyut için 4 (özel) seçildiğinde istenen genişlik ve yüksekliği verir.
Günlük kullanımda yalnızca ilk parametre yeterlidir; diğerleri çoğunlukla gerekmez.

Dönüş değeri ve desteklenen biçimler​

LoadPicture bir StdPicture (IPictureDisp) nesnesi döndürür. Bu nesne bir hücreye ya da değişkene değer olarak yazılamaz; yalnızca Picture özelliği olan nesnelere atanır. Nesne atamasında Set deyimi, doğrudan özellik atamasında ise Picture özelliği kullanılır.

İşlev; bmp, gif, jpg, ico, cur, wmf ve emf dosyalarını yükler. PNG desteği Office sürümüne ve denetime göre değişebilir; kullanmadan önce kendi bilgisayarınızda deneyin. Dosya bulunamazsa 53 numaralı "Dosya bulunamadı" hatası, dosya geçerli bir resim değilse 481 numaralı "Geçersiz resim" hatası oluşur.

Nerede kullanılır, nerede kullanılmaz​

  • UserForm: Image denetiminin Picture özelliğine atanır; ürün fotoğrafı, logo gibi resimler kullanıcı seçimine göre gösterilir.
  • Sayfadaki ActiveX Image: Geliştirici > Ekle > ActiveX Denetimleri > Resim (Developer > Insert > ActiveX Controls > Image) ile eklenen denetimde de aynı şekilde çalışır.
  • Hücre ve normal şekiller: Çalışma sayfasına resim eklemek için LoadPicture kullanılmaz; bunun için Shapes.AddPicture yöntemi kullanılır.
Yüklenen resim dosyaya kaydedilmez; kod her çalıştığında yeniden yüklenir. Resmi kalıcı olarak formun içine gömmek isterseniz özelliği Özellikler penceresinden seçin.

1. Resim dosyalarının tam yolunu oluşturma​

Ürün listesinde her ürünün resim dosya adı C sütunundadır. Resimler tek bir klasörde durduğundan, LoadPicture işlevine verilecek tam yolu D sütununda hazırlıyoruz. Kodu standart bir modüle yapıştırın ve çalıştırın. Bu örnek resmin kendisini yüklemez, yalnızca işleve verilecek yolu üretir.
VBA 18 satır
Option Explicit

Sub TamYolOlustur()
    Dim ws As Worksheet
    Dim klasor As String
    Dim son As Long
    Dim i As Long

    Set ws = ActiveSheet
    ' Resimlerin bulunduğu klasör (sonunda ters bölü olmalı)
    klasor = "C:\Resim\"
    son = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To son
        ' Klasör ve dosya adını birleştirip D sütununa yaz
        ws.Cells(i, "D").Value = klasor & ws.Cells(i, "C").Value
    Next i
End Sub
LoadPicture
Formülünü incelemek için bir hücre seçin.
ABCD
1Ürün KoduÜrün AdıDosya AdıTam Yol
2U001Kablosuz Kulaklıkkulaklik.jpgC:\Resim\kulaklik.jpg
3U002Mekanik Klavyeklavye.jpgC:\Resim\klavye.jpg
4U003Optik Farefare.gifC:\Resim\fare.gif
5U004Web Kamerasıkamera.bmpC:\Resim\kamera.bmp
6U005Dizüstü Çantacanta.jpgC:\Resim\canta.jpg
7U006Monitör Standıstand.jpgC:\Resim\stand.jpg
Ürün ResimleriExcelDepo v1.0.0
Makro, D2 hücresine klasör yolu ile dosya adını birleştirerek C:\Resim\kulaklik.jpg değerini yazar; sonraki satırlar için de aynı işlem yapılır. Bu metin doğrudan LoadPicture işlevine parametre olarak verilebilir.

2. Uzantıya göre yüklenebilirlik kontrolü​

Kullanıcının seçtiği dosyaları LoadPicture ile yüklemeden önce uzantılarını denetlemek hata almanızı önler. Aşağıdaki makro, A sütunundaki dosya adlarının uzantısını B sütununa, işlevin yükleyip yükleyemeyeceğine dair durumu C sütununa yazar. Kodu standart bir modüle yapıştırın.
VBA 34 satır
Option Explicit

Sub UzantiKontrol()
    Dim ws As Worksheet
    Dim ad As String
    Dim uzanti As String
    Dim p As Long
    Dim son As Long
    Dim i As Long

    Set ws = ActiveSheet
    son = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To son
        ad = ws.Cells(i, "A").Value
        ' Son noktanın konumunu bul
        p = InStrRev(ad, ".")
        If p > 0 Then
            uzanti = LCase(Mid(ad, p + 1))
        Else
            uzanti = ""
        End If
        ws.Cells(i, "B").Value = uzanti

        Select Case uzanti
            Case "bmp", "gif", "jpg", "jpeg", "ico", "cur", "wmf", "emf"
                ws.Cells(i, "C").Value = "Yüklenebilir"
            Case "png"
                ws.Cells(i, "C").Value = "Sürüme göre değişir, deneyin"
            Case Else
                ws.Cells(i, "C").Value = "Desteklenmez"
        End Select
    Next i
End Sub
LoadPicture
Formülünü incelemek için bir hücre seçin.
ABC
1Dosya AdıUzantıDurum
2logo.jpgjpgYüklenebilir
3harita.GIFgifYüklenebilir
4tablo.bmpbmpYüklenebilir
5urun.pngpngSürüme göre değişir, deneyin
6sema.wmfwmfYüklenebilir
7rapor.pdfpdfDesteklenmez
8foto.tifftiffDesteklenmez
Dosya KontrolüExcelDepo v1.0.0
A2 hücresindeki dosya için uzantı jpg, durum ise Yüklenebilir olarak yazılır. Büyük harfle yazılmış uzantılar da LCase sayesinde doğru tanınır; örneğin A3 hücresi için uzantı gif bulunur. PNG ve PDF gibi satırların durumuna C5 ile C7 hücrelerinden bakabilirsiniz.

3. UserForm üzerindeki Image denetimine resim yükleme​

Bu örnekte frmUrun adlı bir UserForm'a imgUrun adlı bir Image denetimi eklediğinizi varsayıyoruz. Aşağıdaki kodu standart bir modüle yapıştırın. Makro dosya işlemi ve form gösterimi içerdiği için örnek sayfada çalıştırılmaz; sonucu aşağıda sözle anlatıyoruz.
VBA 25 satır
Option Explicit

Sub UrunResminiGoster()
    Dim yol As String

    ' Gösterilecek resmin tam yolu
    yol = "C:\Resim\kulaklik.jpg"

    ' Dosya yoksa hata almamak için önce denetle
    If Dir(yol) = "" Then
        MsgBox "Resim dosyası bulunamadı.", vbExclamation
        Exit Sub
    End If

    With frmUrun
        .imgUrun.PictureSizeMode = fmPictureSizeModeZoom
        .imgUrun.Picture = LoadPicture(yol)
        .Show
    End With
End Sub

Sub ResmiTemizle()
    ' Boş metin verilirse denetimdeki resim kaldırılır
    frmUrun.imgUrun.Picture = LoadPicture("")
End Sub
LoadPicture
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünResim DosyasıStok
2Kablosuz Kulaklıkkulaklik.jpg120
3Mekanik Klavyeklavye.jpg85
4Optik Farefare.gif240
Ürün KataloğuExcelDepo v1.0.0
UrunResminiGoster çalıştığında önce Dir ile dosyanın varlığı denetlenir. Dosya varsa LoadPicture resmi belleğe yükler, Image denetimine atar ve form ekrana gelir; resim, PictureSizeMode ayarı sayesinde oranı bozulmadan denetime sığdırılır. Dosya yoksa bir uyarı gösterilir ve işlem durdurulur. ResmiTemizle makrosu ise denetimdeki resmi kaldırır.

Kullanırken dikkat edin​

  • Dosya yolunu denetleyin: Dosya yoksa 53 numaralı hata oluşur. Yüklemeden önce Dir işleviyle dosyanın varlığını denetleyin ya da On Error ile hatayı yakalayın.
  • Hücreye resim yüklemek için kullanılmaz: LoadPicture bir nesne döndürür, hücreye değer olarak yazılamaz. Çalışma sayfasına resim eklemek için Shapes.AddPicture yöntemini kullanın.
  • Geçersiz resim hatası: Dosya bozuksa ya da desteklenmeyen bir biçimdeyse (örneğin PDF, TIFF) 481 numaralı hata alırsınız. Resmi bmp, jpg ya da gif biçimine dönüştürün.
  • Ağ yolları ve bellek: Ağ paylaşımındaki büyük resimler yavaş yüklenebilir ve bellek tüketir. Çok sayıda resmi art arda yüklüyorsanız küçük boyutlu sürümlerini kullanın.
  • Resim dosyaya kaydedilmez: Kodla yüklenen resim çalışma kitabına kalıcı olarak gömülmez; kod her çalıştığında yeniden yüklenir. Resim dosyalarını kitapla birlikte taşımayı unutmayın.
  • İlgili konular:
    • Shapes.AddPicture: Çalışma sayfasına resim ekleme yöntemi
    • Image denetimi: Picture ve PictureSizeMode özellikleri
    • UserForm: Form tasarımı ve Show yöntemi
    • Dir: Dosyanın var olup olmadığını denetleme
    • SavePicture: Resim nesnesini dosyaya kaydetme
    • InStrRev: Dosya adındaki uzantıyı bulma
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
7
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst