xlDialogBrowse problemi?(Klasöre Gözat penceresi)

Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Arkadaşlar;
Aşağıdaki kodla Dosya açma penceresini çağırıyoruz.
Kod:
Application.Dialogs(xlDialogOpen).Show
Fakat benim istediğim Klasöre Gözat penceresini çağırmak.Kodu bu şekilde düzenlediğimde hata veriyor.
Kod:
Application.Dialogs(xlDialogBrowse).Show
Amacım klasör seçip içindekilerin tümünü listboxa atmak.
xlDialogOpen ile klasör içindeki dosyayı açıyor ve ordan tek tek dosya seçiyoruz.Oysa yapmak istediğim şey klasörü seçince içindekilerin tümünü listeletmek.İşte bunu xlDialogBrowse ile yapamaya çalışıyorum olmuyor.VB6 da
Kod:
BrowseForFolder(Me.hwnd, "Klasör Seçiniz...")
kodları ile bu pencereye ulaşabiliyorum.



Excelde bunun yolu var mı,nedir?
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

İnternette bulduğum kodlara uyarlama yaptım .belki işinize yarayabilir.
Daha önce Sn.Haluk'un çok daha güzel çalışmaları vardı fakat bulamadım.

inceleyiniz.

Private Sub CommandButton1_Click()
Dim yol, dizin
Set yol = CreateObject("Shell.Application")
Set dizin = yol.BrowseForFolder(&O0, "????????????", &H1 + &H10)
dosya = Dir(dizin.Items.Item.Path & Application.PathSeparator & _
"*.xls", vbDirectory)
Do While dosya <> ""
If dosya = ThisWorkbook.Name Then GoTo ResumeSub:
i = i + 1
ListBox1.AddItem dosya
ResumeSub:
dosya = Dir
Loop
Set yol = Nothing
Set dizin = Nothing

End Sub
 
Son düzenleme:

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

2.seçenek

Private Sub CommandButton2_Click()
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
dizin = .SelectedItems(1)
End If
End With

dosya = Dir(dizin & Application.PathSeparator & _
"*.xls", vbDirectory)
Do While dosya <> ""
If dosya = ThisWorkbook.Name Then GoTo ResumeSub:
i = i + 1
ListBox1.AddItem dosya
ResumeSub:
dosya = Dir
Loop
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Leventm çok güzel bir çalışma yapmışsınız görmemişim.
özür dilerim....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Merhaba

Leventm &#231;ok g&#252;zel bir &#231;al&#305;&#351;ma yapm&#305;&#351;s&#305;n&#305;z g&#246;rmemi&#351;im.
&#246;z&#252;r dilerim....

Rica ederim de&#287;erli dostum Zafer bey, Excel i&#231;in &#214;rnek uygulamalar ve linkler ba&#351;l&#305;&#287;&#305;n&#305; bu sebeple gruplara ay&#305;rmay&#305; d&#252;&#351;&#252;nm&#252;&#351;t&#252;k. B&#246;ylece g&#252;zel olan bir &#231;ok &#231;al&#305;&#351;may&#305; tekrar ortaya &#231;&#305;kartm&#305;&#351; olaca&#287;&#305;z.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
BrowseForFolder(0, "L&#252;tfen bir klas&#246;r se&#231;in !", &H100)
Merhaba,
Buradaki 0 ve &H100 parametreleri neyi ifade ediyor?
Bu de&#287;erler sabit midir? Yoksa di&#287;er alabilece&#287;i de&#287;erler nedir?
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
bende bir soru sormak istiyorum.

sn arkadaşlar
bu sayfadan çok şey öğrendim. hepinizin emeğine sağlık.

klasör açmak için kullanılan kodları gördüm. peki herhangi bir dosyanın seçilmesi için hangi kodları kullanabiliriz?
Application.Dialogs(xlDialogOpen).Show bu kod excel aç komutu. ben herhangi bir dosyayı seçip çalıştırmak istiyorum.(klasöre gözat değilde dosyaya gözat nasıl olur?)

teşekkürler iyi çalışmalar
saygılar:???:
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Aman&#305;nnnn Levent Bey;
Kodlar s&#252;per hemde k&#305;sac&#305;k,elinize sa&#287;l&#305;k.Ayr&#305;ca verdi&#287;iniz &#246;rne&#287;i &#231;oktan ar&#351;ivime eklemi&#351;tim,fakat g&#246;z atmay&#305; unutmu&#351;um.Daha do&#287;rusu farkl&#305; bir &#351;ekilde klas&#246;r se&#231;ti&#287;ini hat&#305;rlad&#305;&#287;&#305;m i&#231;in bakmam&#305;&#351;t&#305;m.Siz s&#246;yleyince hat&#305;rlad&#305;m.
Te&#351;ekk&#252;r ederim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Buradaki 0 ve &H100 parametreleri neyi ifade ediyor?
Bu de&#287;erler sabit midir? Yoksa di&#287;er alabilece&#287;i de&#287;erler nedir?
Bu konuda bildiklerimi s&#246;yleyeyim, ba&#351;taki s&#305;f&#305;r nedir bilmiyorum, sondaki &H100 decimal 256 say&#305;s&#305;n&#305;n hexadecimal kar&#351;&#305;l&#305;&#287;&#305;d&#305;r, bunun yerine 256 da yazabilirsiniz, browserin g&#246;r&#252;nt&#252;s&#252; ve i&#351;levi ile ilgili bir parametredir. &#214;rne&#287;in bu de&#287;er yerine 16 veya &H10 yaz&#305;n, yada 1 veya &H1 yazarak g&#246;r&#252;n&#252;mdeki de&#287;i&#351;iklikleri inceleyin. Hatta kodu a&#351;a&#287;&#305;daki gibi d&#252;zenlerseniz klas&#246;r&#252;de se&#231;ebilirsiniz.

Kod:
[LEFT]Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "L&#252;tfen bir klas&#246;r se&#231;in !", &H100[B][COLOR=blue], "C:\")[/COLOR][/B]
msgbox klasor.Items.Item.Path[/LEFT]
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Verdi&#287;iniz bilgiler i&#231;in te&#351;ekk&#252;rler Levent bey.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
klasör açmak için kullanılan kodları gördüm. peki herhangi bir dosyanın seçilmesi için hangi kodları kullanabiliriz?
Aşağıdaki kodu kullanabilirsiniz.

Kod:
dosya = Application.GetOpenFilename("Excel Dosyası (*.xls),*.xls", , "........ Dosyasını Seçin")
MsgBox dosya
 
Katılım
14 Ekim 2006
Mesajlar
267
Excel Vers. ve Dili
excel2003 Tr
sn hocam

çok teşekkürler saygılar.
emeğinize sağlık:hey:
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sözkonusu uygulamayı çağıran pencerenin "handle" numarasıdır.
Teşekkür ederim Haluk Hocam. Bununla ilgili bir kaç soru sormak istiyorum. Bildiğim kadarı ile bu handle nosu genellikle APIlerde nesneye farklı özellikler eklerken kullanılıyor, bu doğrumudur? Bunun dışında başka bir kullanım yeri mevcutmudur? Birde nesnelerin handle nosunu bulan bir kodlama (hazır bir listede olabilir) varmıdır.
 
Katılım
13 Haziran 2006
Mesajlar
374
Excel Vers. ve Dili
Excel 2003 Türkçe
Matematik Öğretmeni VB,Excel-VBA,...
Bilgiler i&#231;in te&#351;ekk&#252;rler.
Ancak &#304;PTAL tu&#351;una bast&#305;&#287;&#305;m&#305;zda "object variable or with block variable not set" hatas&#305; veriyor.
Bundan kurtulman&#305;n tek yolu "On Error Resume Next" sat&#305;r&#305;n&#305; eklemek mi ba&#351;ka bir &#231;&#246;z&#252;m&#252; varm&#305;.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bilgiler için teşekkürler.
Ancak İPTAL tuşuna bastığımızda "object variable or with block variable not set" hatası veriyor.
Bundan kurtulmanın tek yolu "On Error Resume Next" satırını eklemek mi başka bir çözümü varmı.
Aşağıdaki gibi deneyin.

Kod:
Set klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Lütfen bir klasör seçin !", &H100, "C:\")
If Not klasor Is Nothing Then MsgBox klasor.Items.Item.Path
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Levent dostum,

Windows i&#351;letim sistemi ad&#305;ndan da anla&#351;&#305;laca&#287;&#305; &#252;zere "pencereler" mant&#305;&#287;&#305;yla &#231;al&#305;&#351;an bir sistemdir.

Her program veya her program&#305;n &#231;a&#287;&#305;rd&#305;&#287;&#305; bir diyalog kutusu veya form asl&#305;nda bir penceredir ve her pencerenin bir "handle numaras&#305;" vard&#305;r.

VB (Visual Basic) ile VBA (Visual basic for Applications) aras&#305;ndaki temel fark, her iki dilde de kullan&#305;lan ve benzer &#246;zelliklerini g&#246;zlemledi&#287;imiz nesnelerdedir. &#199;&#252;nk&#252;, VB'de nesneler de bir yerde penceredir ama VBA'de durum b&#246;yle de&#287;ildir. Yani, VB'de bir ListBox'&#305;n "handle numaras&#305;" vard&#305;r ve buna ula&#351;&#305;p, kullanarak baz&#305; i&#351;ler yapabiliriz ama VBA'deki ListBox bir pencere olmad&#305;&#287;&#305; i&#231;in herhangibir "handle numaras&#305;" yoktur.

"Handle numaras&#305;" asl&#305;nda "Windows - Pencereler" i&#351;letim sisteminin, uygulama s&#305;ras&#305;nda aktif pencereler aras&#305;nda hangi pencere ile ilgilendi&#287;ini bulabilmesi i&#231;in kullan&#305;lan bir &#246;zelli&#287;idir. Nesnelerin standart "handle numaralar&#305;" yoktur. Uygulaman&#305;n "compile-derlenme" ve "runtime - &#231;al&#305;&#351;t&#305;rma" a&#351;amalar&#305;nda, Windows pencere &#246;zelli&#287;i olanlara bir numara atamas&#305; yapar.

Yani, bu "handle numaras&#305;" olmadan, Windows pencerelere h&#252;kmedemez. Bu "handle numaras&#305;" formlar&#305;n, uygulamalar&#305;n, nesnelerin "KimlikNumaras&#305;" gibi oldu&#287;unu d&#252;&#351;&#252;nebiliriz.

VB'de bir formun "handle numaras&#305;" formun &#246;zelliklerine g&#246;m&#252;lm&#252;&#351;t&#252;r, benzer &#351;ekilde nesnelerin de &#246;yle (e&#287;er varsa), ama VBA'de durum b&#246;yle de&#287;il. Bu nedenle, VBA'de pencere &#246;zelli&#287;i olan nesnelerin bu "handle numaras&#305;n&#305;" API'ler ile bulabiliyoruz. (Neyseki MS buna izin veriyor.)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
&#220;stad&#305;m &#231;ok te&#351;ekk&#252;r ediyorum, &#231;ok yararl&#305; bir bilgi oldu benim i&#231;in.
 
Üst