• DİKKAT

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

Bir dosyanın bir klasöre kopyalandığını algılama

  • Konbuyu başlatan Konbuyu başlatan baha_x
  • Başlangıç tarihi Başlangıç tarihi
Katılım
7 Şubat 2006
Mesajlar
9
Excel Vers. ve Dili
excel 2002
Herkese merhabalar..
Değişik bir yerde takıldım arkadaşlar yardımlarınızı bekliyorum:

Userformun activate yordamında ftp'den 10 adet dosya çeken bir batch dosyayı shell ile ekledim ve problemsiz çalışıyor.. Ancak son dosyanın geldiğini userform'a nasıl anlatacağımızı çözemedim.
[vb:1:57c328e880]
Sub dosyaya_bak()
Dim ds
Set ds = CreateObject("Scripting.FileSystemObject")
a = ds.FileExists("c:\ftp\0245.xls")
If a = False Then
dosyaya_bak
Else
MsgBox "dosyalar geldi"
Basla
End If
End Sub

yada;
Sub dosyaya_bak()
Dim ds
Set ds = CreateObject("Scripting.FileSystemObject")
a = ds.FileExists("c:\ftp\0245.xls")
do
loop until a=true
MsgBox "dosyalar geldi"
Basla
End Sub

[/vb:1:57c328e880]

bunlar sonuç vermedi. Eğer dosya zaten ilgili klasörde mevcutsa çalışıyor
ama ftp'den dosyalar ilk kez geliyorsa (c:\ftp klasörü boşsa) dosyanın geldiğini anlamıyor.

Şimdiden teşekkürler
 
Aşağıdaki gibi dosya sayısından gidebilirsiniz.

[vb:1:3418302414]Sub dosyaya_bak()
say = CreateObject("Scripting.FileSystemObject").GetFolder("C:\ftp").Files.Count
If say > 0 Then MsgBox "DOSYALAR GELDİ"
End Sub[/vb:1:3418302414]

veya

[vb:1:3418302414]Sub dosyaya_bak()
Set ds = CreateObject("Scripting.FileSystemObject")
a = ds.FileExists("c:\ftp\0245.xls")
If a = True Then
MsgBox "Bu isimde bir dosya var"
Else
MsgBox "Bu isimde bir dosya yok"
End If
End Sub
[/vb:1:3418302414]

Aşağıdaki linkide incelemenizi öneririm.

http://www.excel.web.tr/viewtopic.php?t=4883
 
leventm' Alıntı:
Aşağıdaki gibi dosya sayısından gidebilirsiniz.

[vb:1:4aa0434b09]Sub dosyaya_bak()
say = CreateObject("Scripting.FileSystemObject").GetFolder("C:\ftp").Files.Count
If say > 0 Then MsgBox "DOSYALAR GELDİ"
End Sub[/vb:1:4aa0434b09]

veya

[vb:1:4aa0434b09]Sub dosyaya_bak()
Set ds = CreateObject("Scripting.FileSystemObject")
a = ds.FileExists("c:\ftp\0245.xls")
If a = True Then
MsgBox "Bu isimde bir dosya var"
Else
MsgBox "Bu isimde bir dosya yok"
End If
End Sub
[/vb:1:4aa0434b09]

Aşağıdaki linkide incelemenizi öneririm.

http://www.excel.web.tr/viewtopic.php?t=4883

Levent Hocam saygılar;
Adı geçen linki inceledikten sonra ilk mesajımı attım zaten. Ama sıkıntım şöyleki ;

[vb:1:4aa0434b09]Sub dosyaya_bak()
Set ds = CreateObject("Scripting.FileSystemObject")
a = ds.FileExists("c:\ftp\0245.xls")
If a = True Then
MsgBox "Bu isimde bir dosya var"
Else
MsgBox "Bu isimde bir dosya yok"
End If
End Sub
[/vb:1:4aa0434b09]
bu kod çalıştığı esnada henüz ftp'den 0245.xls gelmemiş olduğundan bu isimde bir dosya yok mesajı alıp çıkıyor; Benim isteğim ise bir şekilde program kodu dönsün a'nın değeri ne zaman true olursa (0245.xls ftp'den ne zaman gelirse) ondan sonra döngüden çıksın ve basla makrosu çalışsın do loop ile denedim, aynı macroya kendi içinden sürekli giderek bir döngü oluşturdum ama maalesef yapamadım. denemelerimi ilk mesajımda örneklemiştim ..

Tekrar teşekkürler
 
Bu durumda istediğinizde mantık hatası var. Çünkü kodu her seferinde başa göndermek, kısır döngüye neden olacaktır, çünkü aranan dosya nasıl ve ne şekilde klasöre kopyalanacak belli değil. Bu kodu klasöre dosya aldığınız kodla birleştirmeniz gerekir, klasöre dosyalarınızı aldığınız kodu verirseniz onun üzerinden gidebiliriz.
 
Şöyle Deneyin
[vb:1:3dc184aef6]Sub dosyaya_bak()
Set ds = CreateObject("Scripting.FileSystemObject")
basla:
If ds.FileExists("c:\1.txt") Then
MsgBox "Dosya Geldi"
Exit Sub
Else
For x = 1 To 10000: Next
GoTo basla
End If
Set ds = Nothing
End Sub[/vb:1:3dc184aef6]
 
veyselemre hocam teşekkürler for next ile bir süre bekletmek olayımı çözdü..
 
Geri
Üst