Miksi minun koodini ei suostu listaamaan kansioita? apua?
***formille
Option Explicit
Private Sub Form_Load()
If Dir("C:\Listatut", vbDirectory) = "" Then
MkDir "C:\Listatut"
End If
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Public Sub Command2_click()
Dim Item As Variant
For Each Item In GetFileList(Dir1.Path)
List1.AddItem Item
Next
If Dir("C:\Listatut", vbDirectory) = "" Then
MkDir "C:\Listatut"
End If
Open "C:\Listatut\Lista.txt" For Append As #1
Print #1, "Tiedostot:"
Print #1, Item
Close #1
End Sub***moduuliin
Option Explicit
Public Function GetFileList(ByVal Folder As String)
If Right$(Folder, 1) <> "\" Then Folder = Folder & "\"
Dim Files As New Collection
ScanFolder Folder, Files
Set GetFileList = Files
End Function
Private Function ScanFolder(Folder As String, Files As Collection)
Dim FolderItem As Variant, NewItem As String, Attr As Long
For Each FolderItem In FolderItems(Folder)
NewItem = Folder & FolderItem
On Error Resume Next
Attr = GetAttr(NewItem)
If Err Then GoTo NextItem
On Error GoTo 0
If Attr And vbDirectory Then
ScanFolder NewItem & "\", Files
Else
Files.Add NewItem
End If
NextItem:
Next
End Function
Private Function FolderItems(Folder As String) As Collection
Dim C As New Collection, S As String
S = Dir(Folder, vbDirectory Or vbHidden Or vbSystem)
Do Until S = vbNullString
If S <> "." And S <> ".." Then C.Add S
S = Dir
Loop
Set FolderItems = C
End Function1. Olisi hyvä kertoa tarkkaan mikä ei toimi. Ei tyyliin: "tossa on koodi, mikä kusee?"
2. Rivi jota debuggeri mahdollisesti herjaa olisi myös hyvä kertoa.
3.Kertaa kohdat yksi ja kaksi.
Kerro kunnollisesti, mitä olet tekemässä, niin voidaan auttaa...
Tuomas: En tiedä mikä kusee... se ei vaan suostu kirjottamaan tuohon "listatut.txt" tiedostoon muuta kuin tuon "Tiedostot:" vaikka sen pitäisi kirjoittaa mitä kansio sisältää. dir1.pathilla pitäisi valita kansio josta se listaa tiedostot. Esim Jos dir1 on kansio E:\Tämä niin sen pitäisi listata sen kansion sisältö.
Debugger ei herjaa mitään...
EDIT: Antti Laaksonen: Olen tekemässä ohjelmaa joka listaa kansiot ja ali kansiot sen on tarkoitus kirjoittaa tiedostot mitä kansio(t) sisältää teksti tiedostoon joka tallentuu "C:\Listatut\Lista.txt"
Mutta se ei suostu kirjoittamaan tonne teksti tiedostoon mitään muuta kuin tuon "Tiedostot:"... Apuja?
Sain toimimaan kun laitoin tuon tekstitiedostoon kirjoituksen tuonne
Dim Item As Variant
For Each Item In GetFileList(Dir1.Path)
List1.AddItem Item
Nextväliin
Olen vieläkin pikkuisen viimeistelemässä tätä tiedoston listaus ohjelmaa mutta sain kaiken tehtyä mutta törmäsin ongelmaa kun yritin listata musiikkiani. Ohjelma ei suostu listaamaan kovalevyn sisältöä vain kansion sisällön. Siis kun valitsen Drivelistboxista kovalevyn ja pidän dirlistboxissa sen juuri kansiossa (D:\) niin se sanoo että
"Run time error '52':
Bad file name or number"
Ongelma on moduulilla
***Moduuli
Option Explicit
Public Function GetFileList(ByVal Folder As String)
If Right$(Folder, 1) <> "\" Then Folder = Folder & "\"
Dim Files As New Collection
ScanFolder Folder, Files
Set GetFileList = Files
End Function
Private Function ScanFolder(Folder As String, Files As Collection)
Dim FolderItem As Variant, NewItem As String, Attr As Long
For Each FolderItem In FolderItems(Folder)
NewItem = Folder & FolderItem
On Error Resume Next
Attr = GetAttr(NewItem)
If Err Then GoTo NextItem
On Error GoTo 0
If Attr And vbDirectory Then
ScanFolder NewItem & "\", Files
Else
Files.Add NewItem
End If
NextItem:
Next
End Function
Private Function FolderItems(Folder As String) As Collection
Dim C As New Collection, S As String
S = Dir(Folder, vbArchive Or vbDirectory Or vbHidden Or vbSystem) 'virhe on tällä rivillä
Do Until S = vbNullString
If S <> "." And S <> ".." Then C.Add S
S = Dir
Loop
Set FolderItems = C
End FunctionMinulla koodi toimi moitteettomasti sekä kiintolevyllä (C:\) että levykkeellä (A:\). Kun yritin lukea tyhjää CD-asemaa (D:\), tuli sen sijaan sama virheilmoitus kuin sinulla. Koodissa on otettu huomioon hakemistolistassa oleva bugi (juurihakemistossa on kenoviiva, mutta alihakemistoissa ei), joten sen suhteen ei pitäisi olla ongelmia. Tarkista Folder-muuttujan arvo virheen aiheuttavalla rivillä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.