只爱陌生人 2006-8-1 18:50
vb中FSO对象的一般操作?
Dim m_objFSO As Scripting.FileSystemObject '定义文件系统对象
Set m_objFSO = New Scripting.FileSystemObject
Dim objFolder As Scripting.Folder
Set objFolder = m_objFSO.GetFolder(mypath) 'mypath="c:\program files\aaa\"
Dim objFile As Scripting.File '文件对象
[color=red] For i = 1 To objFolder.Files.Count
Debug.Print objFolder.Files.Item(i)
Next[/colo]
[color=green]'For Each objFile In objFolder.Files
' Debug.Print objFile.ShortName
'Next[/color]
上面红色部分的代码不能正常运行,总是出现 实时错误5,无效的过程调用或参数
问题出在哪里。难道就只能用for each吗?难道不能用自定义的循环变量(i,j k....)来控制???
objfolder.files.item(i)不行,objfolder.files.item(i).shortname也不行???
只能用objfile.shortname????
只爱陌生人 2006-8-1 19:06
根据对象浏览器里的说明,files.item返回的是file,folder.item返回的是files, file.shortname返回的是string ,
那么,files.item(i).shortname返回的应该是字符串啊?怎么会连基本的debug.print 都不可以呢???
PS,最后,直接用Scripting.FileSystemObject的getfile方法得到并赋值给file,这样就可以用i,j,k等控制了。
不过,想来没有道理啊???哎,VB中所谓的面向对象看来还真没JAVA简单啊!
郁闷中..........
[[i] 本帖最后由 只爱陌生人 于 2006-8-1 20:03 编辑 [/i]]
Nothing 2006-8-1 20:38
使用For Each
[code]
Dim aa As File
For Each aa In objFolder.Files
Debug.Print aa.Name
Next
[/code]
只爱陌生人 2006-8-1 21:03
本来用FSO对象应该蛮简单的,但是,哎,还不如用drive,dir file控件来得方便。至于界面,把drive ,dir file隐藏之后就一样了,只是不知道运行效率怎样?