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

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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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
 
Katılım
7 Şubat 2006
Mesajlar
9
Excel Vers. ve Dili
excel 2002
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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Şö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]
 
Katılım
7 Şubat 2006
Mesajlar
9
Excel Vers. ve Dili
excel 2002
veyselemre hocam teşekkürler for next ile bir süre bekletmek olayımı çözdü..
 
Üst