Aşağıdaki kodlar resim seçmek için FileDialog
penceresinde sacece jpg
, bmp
, png
, jpeg
, ico
, gif
uzantılı dosyaları gösteriyor ve bunlardan bir tanesini seçmenize imkan tanıyor.
Option Explicit
Sub BelliUzantiliResimleriSecVeTamYolunuAl()
'--------------------------------------------------
'Değişkenler
'--------------------------------------------------
Dim kaynak_dosya_yolu As String
Dim hedef_klasor As String
Dim dosya_diyalog As FileDialog
Dim dosya_filtre As FileDialogFilters
'--------------------------------------------------
'FileDialog penceresi için ayarlama yap.
'--------------------------------------------------
Set dosya_diyalog = Application.FileDialog(msoFileDialogOpen)
With dosya_diyalog
.AllowMultiSelect = False
.Title = "Bir resim seçin."
.Filters.Clear
.InitialView = msoFileDialogViewDetails
Set dosya_filtre = .Filters
'--------------------------------------------------
'Dosya filtresini ayarla.
'--------------------------------------------------
With dosya_filtre
.Clear
.Add "Resim Dosyaları", "*.jpg,*.png,*.bmp,*.jpeg,*.ico,*.gif"
End With
'--------------------------------------------------
'Eğer uygun bir dosya seçilmişse tam yolu mesaj olarak göster.
'--------------------------------------------------
If .Show = -1 Then
kaynak_dosya_yolu = _
Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
MsgBox kaynak_dosya_yolu
End If
End With
End Sub
Option Explicit
Sub BelliUzantiliResimleriSecVeTamYolunuAl()
'--------------------------------------------------
'Değişkenler
'--------------------------------------------------
Dim kaynak_dosya_yolu As String
Dim hedef_klasor As String
Dim dosya_diyalog As FileDialog
Dim dosya_filtre As FileDialogFilters
'--------------------------------------------------
'dosya_diyalog değişkenimize atama yapıyoruz.
'--------------------------------------------------
Set dosya_diyalog = Application.FileDialog(msoFileDialogOpen)
With dosya_diyalog
'--------------------------------------------------
'Birden fazla dosya seçmeye izin vermiyoruz.
'--------------------------------------------------
.AllowMultiSelect = False
'--------------------------------------------------
'FileDialog penceresinin başlığını yazdık.
'--------------------------------------------------
.Title = "Bir resim seçin."
'--------------------------------------------------
'Önceden belirlenmiş filtre bilgilerini temizledik.
'--------------------------------------------------
.Filters.Clear
'--------------------------------------------------
'FileDialog penceresindeki dosyaların görünümünü belirledik.
'--------------------------------------------------
.InitialView = msoFileDialogViewDetails
'--------------------------------------------------
'dosya_filtre değişkeni için atama yapıyoruz.
'--------------------------------------------------
Set dosya_filtre = .Filters
'--------------------------------------------------
'Filtre için ayarlama yapıyoruz.
'--------------------------------------------------
With dosya_filtre
'--------------------------------------------------
'Temizlik işlemini yapıyoruz.
'--------------------------------------------------
.Clear
'--------------------------------------------------
'İstediğimiz uzantıları ekliyoruz.
'İlk önce uzantı listemiz için başlık
'belirliyoruz, sonra da uzantılarımızı yazıyoruz.
'--------------------------------------------------
.Add "Resim Dosyaları", "*.jpg,*.png,*.bmp,*.jpeg,*.ico,*.gif"
End With
'--------------------------------------------------
'Şu anda dosya_diyalog değişkeni için kullanılan With
'içindeyiz. dosya_diyalog.Show = -1 yani daha uzun
'haliyle aşağıdaki gibi olan kod şu manaya geliyor:
'Application.FileDialog(msoFileDialogOpen).Show = -1
'Eğer FileDialog penceresinde eylem butonuna basılırsa
'("Aç" butonu) -1 değeri döndürüyor. Eğer iptal butonuna
'basılırsa 0 değerini döndürüyor. Bu değer Long tipinde.
'
'Bu kod için -1 yerine True değeri de koyulabilir.
'Hatta hiçbir şey koyulmayabilir de. If kısmı zaten
'en nihayetinde tek bir mantıksal (bool) değere
'ulaşmaya çalışıyor. dosya_dialog.Show da bir
'bool değer ürettiğinden dolayı bir şeye
'eşitlemesek de if kısmı çalışacak.
'
'Neyse, bu -1 olayı biraz daha çetrefilli,
'meraklı kardeşlerimizi şu web bağlantısına
'alalım ve açıklamayı da çok uzatmayalım:
'https://stackoverflow.com/a/14462348
'--------------------------------------------------
If .Show = -1 Then
'--------------------------------------------------
'Eğer dosya seçilmiş ve eylem butonuna (Aç)
'basılmışsa seçilen dosyanın tam yolunu al.
'--------------------------------------------------
kaynak_dosya_yolu = _
Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
'--------------------------------------------------
'Tam yolu mesaj olarak göster.
'--------------------------------------------------
MsgBox kaynak_dosya_yolu
End If
End With
End Sub