2016-03-30 36 views
1

Ben şuna benzer bir vbscript işlevi yazıyorum:Listeler

Public Function fnGetXLSFileCount() 
Dim fso, src, folder, file, fileList 

    Set fileList = CreateObject("System.Collections.ArrayList") 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    src = "\\myserver\myfolder" 
    Set folder = fso.GetFolder(src) 
    For Each file In folder.files 
     If LCase(fso.GetExtensionName(file)) = "xlsx" Then 
      fileList.Add file.name 
     End If 
    Next 
    Set fnGetXLSFileCount = fileList 

End Function 

Eğer ben bir ArrayList oluşturarak ve ardından mevcut excel dosyaların tümü isimlerini ekliyorum görebileceğiniz gibi belirtilen bir klasör.

Daha sonra bu işlevi çağırıp, döndürülecek bir nesne beklediğimi belirtmek için İşleci ayarla'yı kullanıyorum. Nesnede sayımı kontrol ettiğimde doğru gibi görünüyor. İsim çekmeye çalıştığımda orada hiçbir şey yok. Ne yanlış yapıyorum burada?

For each file in XLSFileList 
    name = file.Item(0) 
Next 
+0

: Item özelliği doğrudan koleksiyonundan özel bir öğeye erişmek için kullanılabilir

For Each file In XLSFileList name = file Next 

: Koleksiyona Sadece isimleri atamak beri sadece adını almak için döngü değişkeni kullanan Evet,() isteğe bağlı. –

cevap

1

For Each döngü zaten koleksiyonun öğeleri sıralar.

WScript.Echo XLSFileList.Item(0) 
+0

Kendimi çok aptalım. Sadece karmaşıklaştırıyordum. Teşekkür ederim. –