• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı dosya bağlantısı...

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,472
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar...
Belirli bir konumdaki kapalı excel dosyasına aynen bir sayfaya bağlanır gibi bağlanmamız mümkün mü?
Örneğin;
Aynı dosyadaki bir sayfay Sheets("Sayfa2").Select yöntemiyle bağlanabiliyoruz.
Aynı işlemi kapalı bir excel dosyasının herhangi bir sayfası için de yapabilir miyiz?
Sonrasında klasik veri kopyalama, veri çağırma işlemlerini yapabileceğim şekilde.
Saygılar...
 
Merhaba sayın leumruk,
Aşağıdaki kodları kendi dosyanıza uyarlayarak kapalı olan dosyayı açabilirsiniz.Gösterilen dosya yolundaki A1 hücresinde ismi yazılı olan dosya açılır. Burada açılamak istenen dosya her seferinde değişebilir düşüncesiyle dosya adını hücreden aldırdım. Her seferinde aynı dosyayı açacaksanız dosya yolunu doğrudan yazabilirsiniz. Eğer dosyanız bir klasör içinde değilse o kısmı çıkararak uyarlayın.İyi çalışmalar.
Sub dosya_aç()
Application.Workbooks.Open "C:\Belgelerim\KLASÖR ADI\" & [Sayfa1!a1] & ""
End Sub
..
 
Syn. acolkesen1,
Sanırım benim ifadelerim de bir eksiklik var...
Kapalı dosya açılmayacak.
Amacım dosyaya ulaşmak değil. Veri kopyalamak ve veri çağırmak. Kopyalama ve çağırma işlemlerini kendi yöntemlerime göre yapmak istediğim için sadece bağlanma kısmını istiyorum.
Dosya açılmadan...
 
Bunu excelin dış veri al özelliği ile yapabileceğiniz gibi ADO ve DAO gibi araçlar kullanarak yapabilirsiniz. Örnek bir dosyada ne yapmak istediğinizi belirtirseniz yardımcı olmaya çalışırız.
 
sn. leumruk, evvelce aşağıdaki kodu bu siteden temin etmiştim, bir inceleyin eminim bir fikir verecektir. Aşağıdaki kodlar kapalı olan VERİLER klasöründe bulunan excel dosyalarındaki e ve g sutunlarındaki bilgileri dosyayı açmadan getirmektedir. Bir deneyin.

Sub VERİLERİ_GÜNCELLE()
Application.ScreenUpdating = False
Dosya_Yolu = "C:\Documents and Settings\tomson\Desktop\VERİLER\"
Set S1 = Workbooks("ANA DOSYA.xls").Sheets("Sayfa1")
S1.Select
[A2:B65536].ClearContents
Set Klasör = CreateObject("Scripting.FileSystemObject").GetFolder(Dosya_Yolu).Files
For Each Dosya In Klasör
If InStr(Dosya.Name, ".xls") > 0 Then
If Dosya.Name <> "ANA DOSYA.xls" Then
Workbooks.Open Filename:=Dosya
Sheets("Sayfa1").Select
Range("E2:E" & [E65536].End(3).Row).Copy S1.Cells(65536, 1).End(3).Offset(1)
Range("G2:G" & [G65536].End(3).Row).Copy S1.Cells(65536, 2).End(3).Offset(1)
ActiveWorkbook.Close True
End If
End If
Next
Application.ScreenUpdating = True
MsgBox "Veriler aktarılmıştır.", vbInformation
End Sub
 
Syn. Levent Menteşoğlu,
Örnek ekte. Butonlara tıkladığınızda yapmak istediğimi anlayacaksınız. Birinci buton Sayfadaki verileri benim belirlediğim şekilde "Veri" ve "CVP" sayfalarına KOPYALIYOR. İkinci buton, Kopyaladığım bu verileri başlığına göre bulup yeniden AnaSayfa'ya kopyalıyor.
Benim yapmak istediğim ise bu işlemi kapalı bir excel dosyasına uygulamak.
Kopyalıyor kısmını vurgulama sebebim: Aktarma işlemlerinde metin biçimlendirmelerini de alması gerektiğini belirtmek.
Yani "Veri" ve "CVP" sayfası farklı bir excel dosyasında olacak.
Saygılar...
 

Ekli dosyalar

Son düzenleme:
Syn. tahsinanarat,
Verdiğiniz kodu inceliyorum. Kullanışlı bir koda benziyor.
Teşekkür ederim.
 
Kod:
Sub VERİLERİ_GÜNCELLE()
Application.ScreenUpdating = False
Dosya_Yolu = "C:\Documents and Settings\tomson\Desktop\VERİLER\"
Set S1 = Workbooks("ANA DOSYA.xls").Sheets("Sayfa1")
S1.Select
[A2:B65536].ClearContents
Set Klasör = CreateObject("Scripting.FileSystemObject").GetFold er(Dosya_Yolu).Files
For Each Dosya In Klasör
If InStr(Dosya.Name, ".xls") > 0 Then
If Dosya.Name <> "ANA DOSYA.xls" Then
[COLOR="Red"]Workbooks.Open[/COLOR] Filename:=Dosya
Sheets("Sayfa1").Select
Range("E2:E" & [E65536].End(3).Row).Copy S1.Cells(65536, 1).End(3).Offset(1)
Range("G2:G" & [G65536].End(3).Row).Copy S1.Cells(65536, 2).End(3).Offset(1)
[COLOR="red"]ActiveWorkbook.Close[/COLOR] True
End If
End If
Next
Application.ScreenUpdating = True
MsgBox "Veriler aktarılmıştır.", vbInformation
End Sub
Selamlar, yukarıdaki kod kapalı dosyaya veri aktarma işimi tam istediğim gibi çözüyor; fakat bu noktada kırmızı satırlar kafama takıldı. Bu satırlar dosyayı açıp kapatmamıza yarıyor. Yani dosya pek de kapalı olmuyor.
Konu hakkında bilgim olmadığı için soruyorum:
Kaynak dosyayı aç kapa yapmadan, kapalı dosyaya aktarma yapamıyor muyuz?
 
Syn. Zeki Gürsoy,
Daha önce ADO araştırması yaptım. Kopyalama şeklinde aktarma yapılamadığı şeklinde bir yanıt aldım. Yani metin biçimlendirmeleri aktarılamıyormuş.
 
Bu durumda dosyayı açıp kapatmak gerekiyor. Dosyanın gizli açılması işinizi görür mü?
 
Syn. Zeki Gürsoy,
Eklediğim kod, işlmeleri gizli yapıyor. Bu konuda bir sıkıntı yok. Hatta her isteğimi o kodla rahat bir şekilde yapabiliyorum.
Kapalı dosyaya veri kopyalamadaki amacım, dosya boyutu arttığında her kayıtta dosyanın kasılmasını engellemek. Mesela; dosyam, 10 mb çıktığında doğal olarak kasılmaya başlayacak. Bu nedenle Ana Dosyayı giriş dosyası yapıp, kapalı dosyayı kaynak dosya yapmayı planlıyordum. Böylece ne kadar kayıt yaparsam yapayım, Anadosyamın boyutu hep aynı kalacak, kasılmada önlenmiş olacaktı.(Planlarıma göre...)
Bunu sağlayamadıktan sonra depolama işini aynı dosya içinde yapmak benim için daha avantajlı.
Tek amacım, kasılmayı önlemek.
 
Depolama işlemini ana dosyaya yaptığınızda, boyutu da >10 mb olduğunda ana dosyanız da kasılacaktır.
 
Depolama işlemini ana dosyaya yaptığınızda, boyutu da >10 mb olduğunda ana dosyanız da kasılacaktır.

Şu an kullandığım dosyada depolamayı zaten anadosya'ya yapıyorum. Ve kasıyor. Bu nedenle kapalı dosya uygulamalarına ihtiyaç duydum.
Sanırım, depolamayı kapalı dosyaya yaparsanız, yine kasılma olacak demek istediniz.
Evet, eklediğim koddaki sistemle yapılan kapalı dosyaya aktarma uygulamasında aynı kasılma oluyor.
Ben şu şekilde düşündüm: Eğer kapalı dosyamız, hiç bir şekilde açılmadan(Gizli Aç-Kapa da olmayacak şekilde) kopyalama yapılabilirse kasılma da önlenmiş olur.
Böyle bir sistem var mı? Kesinlikle açma olmayacak.
Bir de, hiç açmadan kopyalama gerçekleşiyor diyelim; aynı kasılma böyle bir sistemde de olur mu?
 
Soru güncelleme...

Selamlar...
Şu iki soru hakkında bilgisi olan var mı?
1- Kapalı dosya uygulamalarında bağlantı kurduğumuz dosya aslında kapalı değil mi? İşlem yaparken veri dosyası açılıyor, kapanıyor da biz mi bu açılıp kapanmayı göremiyoruz?
2- Bu soru 1. sorunun cevabına bağlı bir soru. Diyelim ki dosya açılmadan bağlantı sağlanıyor olsun, sürat açısından veriyi farklı bir dosyaya kaydetmekle, aynı dosyaya kaydetmek arasında bir fark yok mu?(Dosya yükü arttığında.)
Saygılar...
 
Sub VERİLERİ_GÜNCELLE()
Application.ScreenUpdating = False
Dosya_Yolu = "C:\Documents and Settings\tomson\Desktop\VERİLER\"
Set S1 = Workbooks("ANA DOSYA.xls").Sheets("Sayfa1")
S1.Select
[A2:B65536].ClearContents
Set Klasör = CreateObject("Scripting.FileSystemObject").GetFold er(Dosya_Yolu).Files
For Each Dosya In Klasör
If InStr(Dosya.Name, ".xls") > 0 Then
If Dosya.Name <> "ANA DOSYA.xls" Then
Workbooks.Open Filename:=Dosya
Sheets("Sayfa1").Select
Range("E2:E" & [E65536].End(3).Row).Copy S1.Cells(65536, 1).End(3).Offset(1)
Range("G2:G" & [G65536].End(3).Row).Copy S1.Cells(65536, 2).End(3).Offset(1)
ActiveWorkbook.Close True
End If
End If
Next
Application.ScreenUpdating = True
MsgBox "Veriler aktarılmıştır.", vbInformation
End Sub



Set Klasör = CreateObject("Scripting.FileSystemObject").GetFold er(Dosya_Yolu).Files
bu kod kırmı hata veriyor ne yapmak lazım
 
Geri
Üst