[FONKSiYON] Klasör seçip sadece dosya adının forma yazdırılması
#1
access-sql-18 
Merhaba,

Textbox(dosya_adi) alanına tıklandığında olay yordamına public function tanımlayarak spesifik bir klasörü açmasını ve seçtiğim 1 dosyanın(herhangi bir format olabilir) adının dosya alanına yazdırılmasını istiyorum. Bunun aşağıdaki şekilde bir fonksiyon oluşturup tıklandığında yordamına call selectfile yaptım. Ancak dosya adını yazdıramadım. Fonksiyon kodu yorumumda nasıl bir revize yapmamı önerirsiniz?

Public Function selectfile() As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
.AllowMultiSelect = False
.Title = "Lütfen Dosya Seçiniz"
.InitialFileName = "C:\Users\abc\Desktop\Access Works\Ek"
If .Show = True Then
selectfile = .SelectedItems(1)
Me.Dosya = Selectfile
Else
Exit Function
End If
End With
Set fd = Nothing

End Function



  Alıntı
Bu mesajı beğenenler:
#2
sn elbenli
Me.argumanını fonksiyonda direk kullanamazsınız. Kullanmak için Public değişken kullanmalısınız.
Visual Basic
  1. Public dosyaadim As String


Daha sonra fonksiyonu şu şekilde değiştirin
Visual Basic
  1. Public Function selectfile() As String
  2. Dim fd As FileDialog
  3. Set fd = Application.FileDialog(msoFileDialogFilePicker)
  4.  
  5. With fd
  6. .AllowMultiSelect = False
  7. .Title = "Lütfen Dosya Seçiniz"
  8. .InitialFileName = C:\Users\abc\Desktop\Access Works\Ek"
  9. If .Show = True Then
  10. selectfile = .SelectedItems(1)
  11. 'Klasör yoluyla beraber
  12. 'dosyaadim = selectfile
  13.  
  14. 'Sadece dosya adı istenirse
  15. 'dosyaadim = Mid(selectfile, Len(.InitialFileName) - 3, Len(selectfile))
  16. Else
  17. Exit Function
  18. End If
  19. End With
  20. Set fd = Nothing
  21. End Function


Son bir noktayla işlemi bitirelim.
dosyaadı tıklandığında olayına aşağıdaki gibi yazın
Visual Basic
  1. Private Sub dosya_adi_Click()
  2. selectfile
  3. Me.dosya_adi.Value = dosyaadim
  4. End Sub





  Alıntı
Bu mesajı beğenenler:
#3
Sn onur_can

Belirttiğiniz gibi Fonksiyon kodunda düzenleme yaptım.

Visual Basic
  1. Public Function SelectFile() As String
  2.  
  3. Dim dosyaadim As String 'BU İFADEYİ HATA ALDIĞIM İÇİN EKLEDİM.
  4. Dim fd As FileDialog
  5. Set fd = Application.FileDialog(msoFileDialogFilePicker)
  6.  
  7. With fd
  8. .AllowMultiSelect = False
  9. .Title = "Lütfen Dosya Seçiniz"
  10. .InitialFileName = "C:\Users\abc\Desktop\Access Works\Ek"
  11.  
  12. If .Show = True Then
  13. SelectFile = .SelectedItems(1)
  14. dosyaadim = Mid(SelectFile, Len(.InitialFileName) - 3, Len(SelectFile))
  15. Else
  16. Exit Function
  17. End If
  18. End With
  19. Set fd = Nothing
  20.  
  21. End Function



Dosya alanına tıklandığında yordamında da düzenleme yaptım.
Visual Basic
  1. Private Sub Dosya_Click()
  2. SelectFile
  3. Me.Dosya.Value = dosyaadim
  4. End Sub



Ancak dosya alanını tıklayıp istediğim dosyayı seçtiğimde seçtiğim dosyanın adını yazmak yerine nerden getirdiğini tam olarak anlayamadığım bir dosya adını yazdırıyor. Sonraki her yeni kayıt seçimi için de aynı dosya adını yazdırıyor.
Rica etsem tekrar kontrol edebilir misiniz?



  Alıntı
Bu mesajı beğenenler:
#4
Visual Basic
  1. Dim dosyaadim As String 'BU İFADEYİ HATA ALDIĞIM İÇİN EKLEDİM.



bu değişkeni fonksiyonun en üstüne global olarak tanımlamalısınız. Mesajımda bahsetmiştim ama gözden kaçırdınız herhalde! Şu Şekilde;
fonksiyonun bulunduğu modülün en üstüne Option Explicit satırından hemen sonra. Ben size mesaj yazmadan test etmiştim fonksiyonu.
Visual Basic
  1. Public dosyaadim As String



Fonksiyon:
Visual Basic
  1. Dim fd As FileDialog
  2. Set fd = Application.FileDialog(msoFileDialogFilePicker)
  3.  
  4. With fd
  5. .AllowMultiSelect = False
  6. .Title = "Lütfen Dosya Seçiniz"
  7. .InitialFileName = "C:\Users\abc\Desktop\Access Works\Ek"
  8.  
  9. If .Show = True Then
  10. SelectFile = .SelectedItems(1)
  11. dosyaadim = Mid(SelectFile, Len(.InitialFileName) - 4, Len(SelectFile))
  12. Else
  13. Exit Function
  14. End If
  15. End With
  16. Set fd = Nothing









  Alıntı
Bu mesajı beğenenler:
#5
Sn onur_can,

Belirttiğiniz gibi dikkatimden kaçan bir durum oluşmuş. Kodları öneriniz doğrultusunda revize edince düzeldi.

İşbirliğiniz için çok teşekkür ederim.

Sevgiler..



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Aktarım Yaparken Dosya Adını Değiştirme zimbit 4 107 04-02-2024, 00:42
Son Mesaj: zimbit
  [FORM] form klasör içinde dosya kontrolü obaysal42 4 2.173 29-12-2023, 10:24
Son Mesaj: burhanb
  [VBA] Dosya Yolu Yazdırma benuva 2 108 26-11-2023, 19:06
Son Mesaj: benuva
  Klasor Açma Kars36 6 5.339 14-11-2023, 15:35
Son Mesaj: vetaltan
  [VBA] Dosya Yolu Boş Ise Hata Alıyorum serdem48 4 110 26-10-2023, 14:11
Son Mesaj: serdem48
  Sadece Geçerli Kayıtta Kenarlık Rengi Değiştirme Hk. adnnfrm 25 492 13-09-2023, 00:00
Son Mesaj: halily
  Toplu .csv, .xlsx, .xls, .xml Dosya Aktarımı Yapmak adnnfrm 2 225 22-06-2023, 19:04
Son Mesaj: dsezgin
  [FORM] Forma Arama Ekleyemedim :( finishim 16 514 16-05-2023, 12:44
Son Mesaj: finishim

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi