ADO ile veri aldıktan sonra dosyayı silmek.

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba.
ADO ile kapalı excel (xls) dosyasından verileri çekiyorum.
Connection ve Recordset objelerini kapatıyorum. Ancak Kill satırında Permission Denied hatası alıyorum.
Eksik ya da hatam nerededir? Klasör özellikleriyle alakalı bir durum mudur?

C++:
    If AdoCn.State <> 0 Then AdoCn.Close
    If AdoRs.State <> 0 Then AdoRs.Close
    Kill Klasor & "\" & Dosya
 

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
Benim yaptığım denemelerde böyle bir sorunla karşılaşmadım.... dediğiniz gibi klasör veya dosya özeliikleriyle ilgili bir durum olabilir.

.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
C++:
Sub DosyaSil(Klasor, Dosyam)
    Dim fL As Object
    Set fL = CreateObject("Scripting.FileSystemObject")
    For Each Dosya In fL.GetFolder(Klasor).Files
     If Dosya.Name = Dosyam Then fL.DeleteFile Dosya: Exit For
    Next
    Set fL = Nothing
End Sub
Bu şekilde sileyim dedim. Yine aynı uyarıyı verdi.
Dosya ya da klasör özelliklerinden olması çok daha olası ancak çözüm nasıl olacak şu ana kadar bulamadım.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

ADO kullanmadan ilgili dizindeki dosyayı makro yardımı ile silebiliyor musunuz?
İzinlerde sıkıntı var mı yok mu anlamak için.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Boş bir modül içine aşağıdaki kodları ekleyerek çalıştırdım.
Aynı hatayı verdi.
Exceli komple kapatıp açtım, Userform kodlarını hiç aktif etmeden bu makroyu tekrar çalıştırdım. Sonuç aynı.
C++:
Sub DosyaSil()
    Dim fL As Object
    Klasor = ThisWorkbook.Path & Application.PathSeparator & "Banka"
    Dosyam = "202201-Ocak" & ".xls"
    Set fL = CreateObject("Scripting.FileSystemObject")
    For Each Dosya In fL.GetFolder(Klasor).Files
     If Dosya.Name = Dosyam Then fL.DeleteFile Dosya: Exit For 'Yine bu satırda Permission denied veriyor
    Next
    Set fL = Nothing
End Sub
Devamında D sürücüsünün altına yeni bir klasör açıp yeni bir boş excel dosyası ekledim.
Bu kod o dosyayı direkt sildi.

Mevcut silmek istediğim klasör altındaki dosyayı direkt manuel silmek istediğimde Excel üzerinde açık olduğu uyarısı verdi.
Exceli kapattım, yine silmedi ve excel üzerinde açık olduğu uyarısı verdi.
Dosyayı kopyalayabiliyor ama silemiyorum.
Ne manuel ne de VBA ile.
Tek denemediğim bilgisayarı kapatıp açmak kaldı.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
dizin üzerinde izinlerde bir sıkıntı var bence, onları kontrol etmek gerek.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Necdet bey.
Excel kapalı ve direkt dosya gezgininden klasörün içindeki dosyayı silemiyorum. Dosya ya da klasör özelliği olsa aşağıdaki mesajı almamam lazım diye düşünüyorum.

234278
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Ömer bey,
mesaja bakılırsa dosya halaaa açık görünüyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,274
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Görev yöneticisinden açık olan excel uygulamalarının hepsini kapatıp öyle deneyiniz.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ben de bunu çözemiyorum. İlginç.

Şöyle yaparak sorunumu şimdilik geçiştirdim.
Yeni bir klasör açtım benzer adla. Dosyayı sildirmiyor, kestirmiyor ama kopyalattırdığı için dosyayı bu klasöre kopyaladım.
Kodlar orjinal haliyle ADO işlemlerini yapıp Kill komutuyla da başarılı şekilde sildim.

Ancak eski klasörü ve içindeli dosyayı halen sildirmiyor bana.
Kodları yazdığım dosyanın gelişimi esnasıdna bir ADO bağlantısını kapatmamış dahi olsam exceli kapattığım için tüm ADO bağlantıları kopacaktır diye düşünüyorum. Doğrumudur anlayamadım ama.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Görev yöneticisinden açık olan excel uygulamalarının hepsini kapatıp öyle deneyiniz.
Excel kapalı olduğu halde arka planda çalışıyormuş. Dediğinizi yapınca düzeldi. Teşekkürler.

Arka planda neden çalıştığını henüz çözemedim.
Ado işlemlerini tekrar tekrar denedim bir sorun yok.
Ado nesnelerini kapatmadan kodları sonlandırdım aynı problem oluşacak mı diye yine oluşmadı.

Sanırım daha fazla kurcalamaya gerek yok. Tekrar olduğunda tekrar bakarız artık.
 
Üst