Klasörden dosya çekmek

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
iyi geceler,
gene bir soru, elimde 1 adet klasör var -xxx kalsörü-; klasörün içinde a.xls, b.xls ve c.xls isimli 3 adet kitap var. ben d.xls kitabının A1 kutucuğuna a.xls yazdığımda xxx kalsöründeki a.xls ye direk linklenebilecek bi kod yazabilir miyim?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Ana_Dosya' nın A1 hücresine dosya ismini girip Enter'layın. Uzantı girmenize gerek yok.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Dosya = [a1].Text
    With Application.FileSearch
    .LookIn = ThisWorkbook.Path & "\xxx"
    .Filename = Dosya & ".xls"
    If .Execute() > 0 Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
    End With
End Sub
Klasörü rar dosyasından çıkarmayı unutmayın.
 

Ekli dosyalar

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Merhaba,
Ana_Dosya' nın A1 hücresine dosya ismini girip Enter'layın. Uzantı girmenize gerek yok.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Dosya = [a1].Text
    With Application.FileSearch
    .LookIn = ThisWorkbook.Path & "\xxx"
    .Filename = Dosya & ".xls"
    If .Execute() > 0 Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
    End With
End Sub
Klasörü rar dosyasından çıkarmayı unutmayın.

belirtilen adlı öğe bulunamadı hatası veriyor.?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Klasörü rardan çıkarmış olmanız gerekli. Eklediğim dosyayı kendi klasöründen çıkarmamalısınız. Belki dosyanın uzantısını da yazmış olabilirsiniz. xxx klasörüne a, b, c adında 3 dosya ekledim bunlardan birini yazmalısınız. Örneğin: a gibi.
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Klasörü rardan çıkarmış olmanız gerekli. Eklediğim dosyayı kendi klasöründen çıkarmamalısınız. Belki dosyanın uzantısını da yazmış olabilirsiniz. xxx klasörüne a, b, c adında 3 dosya ekledim bunlardan birini yazmalısınız. Örneğin: a gibi.
aynen öyle yaptım. hatayı ekledim.
 

Ekli dosyalar

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Sanırım 2007 kullanıyorsunuz, sorunun sebebi bu olabilir. Hata verdiğinde Debug'a tıklayıp hata satırını ekler misiniz? Alternatif bir kod deneyeyim.
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Sanırım 2007 kullanıyorsunuz, sorunun sebebi bu olabilir. Hata verdiğinde Debug'a tıklayıp hata satırını ekler misiniz? Alternatif bir kod deneyeyim.
emeğinize sağlık olursa çok güzel olcak benim için...
 

Ekli dosyalar

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Tüm kodu aşağıdakiyle değiştirip sonucu bildirir misiniz?
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Dosya = [a1].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Tüm kodu aşağıdakiyle değiştirip sonucu bildirir misiniz?
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Dosya = [a1].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
süper. evet çalıştı. çok teşekkür ederim. peki b orada yazılı kalsın ben b' ye tıkladığımda b.xls yi alsın. yani her seferinde ayrı ayrı yazmiim. şirkette teklif formları excel sayfasında liste yapacağım ben listeye tüm teklif isimlerini gireceğim tek bir excel sayfasında liste halinde olacak. örnek a1 kutucuğunda 004 nolu teklif olacak ben tıkladığımda 004 nolu teklif açılacak.
(açıklayabildim umarım? )
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Kodu aşağıdakiyle değiştirin. A1 hücresine çift tıkladığınızda çalışır.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Cancel = True
Dosya = [a1].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Kodu aşağıdakiyle değiştirin. A1 hücresine çift tıkladığınızda çalışır.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Cancel = True
Dosya = [a1].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
harika oldu. ne kadar teşekkür etsem az zihninize, elinize sağlık. xxx yazan yerleri dosya adı ile değiştirdiğimde heryerde kullanabilirim sanırım değil mi? bir de a1 den a 10 a kadar nasıl olan hücrelerde nasıl kullanabilirim?
çok teşekkür ederim.
 
Son düzenleme:

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,637
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
arkadaşlar aynı işlemi rar'lı dosyadan çıkartarak nasıl yaparız

günlerdir buna kafa patlatıyorum, sonuç sıfır
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
xxx, açmak istediğiniz dosyaların bulunduğu klasörün adı. Klasör ismini değiştirdiğinizde koddaki yerine adını eklemeniz gerekli. Sizin söylediğiniz gibi xxx kısmına yeni klasör adını eklemelisiniz. Ana_Dosya'nın yerini değitirmediğiniz sürece kodu farklı klaör isimleriyle kullanabilirsiniz. Ana_Dosya'yı klasör dışına çıkaracaksanız dosya yolunun yeniden yazılması gerekir.
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
xxx, açmak istediğiniz dosyaların bulunduğu klasörün adı. Klasör ismini değiştirdiğinizde koddaki yerine adını eklemeniz gerekli. Sizin söylediğiniz gibi xxx kısmına yeni klasör adını eklemelisiniz. Ana_Dosya'nın yerini değitirmediğiniz sürece kodu farklı klaör isimleriyle kullanabilirsiniz. Ana_Dosya'yı klasör dışına çıkaracaksanız dosya yolunun yeniden yazılması gerekir.
çok oldum ama bu son :) bir de a1 den a 10 a kadar nasıl olan hücrelerde nasıl kullanabilirim?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Diğer sorunuzu yeni gördüm. Aralığı genişletmek için aşağıdaki satırı kullanacaksınız.
Kod:
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Bunun yerine:
Kod:
If Intersect(Target, [[COLOR="Red"]a1:a10[/COLOR]]) Is Nothing Or Target = "" Then Exit Sub
yazmalısınız.
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Diğer sorunuzu yeni gördüm. Aralığı genişletmek için aşağıdaki satırı kullanacaksınız.
Kod:
If Intersect(Target, [a1]) Is Nothing Or Target = "" Then Exit Sub
Bunun yerine:
Kod:
If Intersect(Target, [[COLOR="Red"]a1:a10[/COLOR]]) Is Nothing Or Target = "" Then Exit Sub
yazmalısınız.
ekledim ama a1 de hangisi yazılı ise onu açıyor. yani a1 de a yazıo, a4 te b yazıo a.xls yi açıyor :S
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Gözümden kaçmış. Aşağıdaki kodu kullanın.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [a1:a10]) Is Nothing Or Target = "" Then Exit Sub
Cancel = True
Dosya = [COLOR="Red"]Target[/COLOR].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
Gözümden kaçmış. Aşağıdaki kodu kullanın.
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [a1:a10]) Is Nothing Or Target = "" Then Exit Sub
Cancel = True
Dosya = [COLOR="Red"]Target[/COLOR].Text
    If Dir$(ThisWorkbook.Path & "\xxx\" & Dosya & ".xls") <> "" Then
    CreateObject("Shell.Application").Open ThisWorkbook.Path & "\xxx\" & Dosya & ".xls"
    Else
    MsgBox "Bu isimde bir dosya bulunmamaktadır.", vbCritical, "Dosya Bulunamadı"
    End If
End Sub
evet oldu. :) gece gece oldukça yordum sizi elinize kolunuza sağlık çok teşekkür ederim.
 

sosorry

Altın Üye
Katılım
17 Ocak 2007
Mesajlar
193
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
23-08-2025
tekrar selam,
bu kodu kendi klasörüme uyguladım ve çalışıyor, tekrar çok teşekkür ederim. konu hakkında tekrar bişi sorcam, hücreye yazılmış olan kitap isimleri çok uzun ve aynen yazılması gerekiyor. bu kitaplar 0100 gibi 4 haneli sayılarla başlıyor. hücreye yanlızca ilk 4 hane girilerek o kitabı çağırma gibi bir kod yazılabilir mi? şimdiden çok teşekkür ederim.
 
Üst