设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 1919|回复: 10
打印 上一主题 下一主题

[查询] 请文怎么查找列举出文件的绝对路径?

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-24 19:55:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我想问的不是查找已知文件名的文件,而是想把某个打开的文件夹下所有的文件的绝对路径全部都显示列举出来,以便程序进一步的应用,谢谢~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
11#
发表于 2008-12-25 22:08:49 | 只看该作者
原帖由 today416 于 2008-12-25 10:50 发表
斑竹能不能帮忙写个哦,小弟不会,特别是对操作文件之类的东东
  1. Private Sub Command7_Click()
  2.     Dim fs As New FileSystemObject
  3.     Dim fd As Folder
  4.     Dim sfd As Folder
  5.     If IsNull(Me.Text0) Then
  6.         MsgBox "请输入文件夹"
  7.         Me.Text0.SetFocus
  8.         Exit Sub
  9.     End If
  10.     Me.List10.RowSource = ""
  11.     Set fd = fs.GetFolder(Me.Text0)
  12.     ListFolder fd
  13. End Sub

  14. Sub ListFolder(fd As Folder)
  15.     Dim sfd As Folder
  16.     Dim f As File
  17.     For Each f In fd.Files
  18.         List10.AddItem f.Path
  19.     Next
  20.     For Each sfd In fd.SubFolders
  21.         List10.AddItem sfd.Path
  22.         ListFolder sfd
  23.     Next
  24. End Sub
复制代码
10#
 楼主| 发表于 2008-12-25 10:50:52 | 只看该作者
斑竹能不能帮忙写个哦,小弟不会,特别是对操作文件之类的东东
9#
发表于 2008-12-25 10:44:43 | 只看该作者
问题1
你可以用文本框边上的按钮选择文件夹(刚才忘了锁定它)
问题2.
估计要写个递归函数过程。
8#
 楼主| 发表于 2008-12-25 10:40:06 | 只看该作者
多谢斑竹,再试了下,发现一个BUG
如果文本框中输入 c:\     则显示正确的文件,但是如果输入 c: (注意,没有斜杠),则也会列举出很多文件,但我看了,显然不是c盘根目录下的文件,但是d:\与d:  e:\与e:确不存在这样的问题

另外我还想请教下斑竹,如果我想不仅列出文件夹下的文件,而且想把文件夹下的文件夹(即子文件夹)的名字也列举出来,而且列举出来能区分哪个是文件哪个是文件夹,如何写代码?
7#
发表于 2008-12-25 09:32:16 | 只看该作者
If diaFS.SelectedItems.Count > 0 Then
        Me.Text0 = diaFS.SelectedItems(1)
    Else
        Me.Text0 = ""
    End If
上面这一句中,Me.Text0 = "",应该更改为 Me.Text0 = null,刚才一路写代码没注意。[:31]
6#
发表于 2008-12-25 09:28:46 | 只看该作者
原帖由 today416 于 2008-12-25 09:25 发表
斑竹我看了下代码,知道第二个问题怎么解决了,但是第一个问题还是不懂?


需要引用 Microsoft Scripting Runtime,Office 11


  1. Private Sub Command2_Click()
  2.     Dim diaFS As FileDialog
  3.     On Error GoTo Command2_Click_Error

  4.     Set diaFS = Application.FileDialog(msoFileDialogFolderPicker)
  5.     With diaFS
  6.         .AllowMultiSelect = False
  7.         .Show
  8.     End With
  9.     If diaFS.SelectedItems.Count > 0 Then
  10.         Me.Text0 = diaFS.SelectedItems(1)
  11.     Else
  12.         Me.Text0 = ""
  13.     End If

  14.     On Error GoTo 0
  15.     Exit Sub

  16. Command2_Click_Error:

  17.     MsgBox "Error " & Err.Number & " " & Err.Description
  18. End Sub

  19. Private Sub Command7_Click()
  20.     Dim fs As New FileSystemObject
  21.     Dim fd As Folder
  22.     Dim f As File
  23.     On Error GoTo Command0_Click_Error
  24.     If IsNull(Me.Text0) Then
  25.         MsgBox "请输入文件夹"
  26.         Me.Text0.SetFocus
  27.         Exit Sub
  28.     End If
  29.     Me.List10.RowSource = ""
  30.     Set fd = fs.GetFolder(Me.Text0)
  31.     For Each f In fd.Files
  32.         Me.List10.AddItem f.Name
  33.     Next

  34.     On Error GoTo 0
  35.     Exit Sub

  36. Command0_Click_Error:

  37.     MsgBox "Error " & Err.Number & " " & Err.Description
  38. End Sub

  39. Private Sub Form_Load()
  40.     Me.List10.RowSourceType = "Value List"
  41.     Me.List10.RowSource = ""
  42. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5#
 楼主| 发表于 2008-12-25 09:25:54 | 只看该作者
斑竹我看了下代码,知道第二个问题怎么解决了,但是第一个问题还是不懂?
4#
 楼主| 发表于 2008-12-25 09:12:06 | 只看该作者
多谢斑竹,但是我试了后发现有两个问题:
1.好像只可以运用于各个盘的根目录,例如D盘根目录下的文件,如果想列举D:\某文件夹,下的文件就不可以
2.列举出C盘根目录下的文件不是很全,好像很多系统文件列举不出来,例如BOOT。ini,ntldrd等文件
请问斑竹怎么解决?
3#
发表于 2008-12-24 21:18:59 | 只看该作者
需要引用 Microsoft Scripting Runtime

1. 建一个窗体,上面放置文本框一个,名字为“驱动器名”,按钮一个,名字“command2”,列表框一个,名字“List3”
2. 输入下面的代码试试。

  1. Private Sub Command2_Click()

  2.     Dim myDrive As String
  3.     Dim Fs As New FileSystemObject
  4.     Dim Fd As Folder, F As File

  5.     On Error Resume Next

  6.     myDrive = Trim(Me.驱动器名)
  7.     If myDrive = "" Then
  8.         MsgBox "请输入欲显示文件的驱动器名"
  9.         Me.驱动器名.SetFocus
  10.         Exit Sub
  11.     End If
  12.     If Right(myDrive, 2) <> ":" Then
  13.         myDrive = myDrive & ":"
  14.     End If
  15.     Set Fd = Fs.GetFolder(myDrive)
  16.     Me.List3.RowSource = ""
  17.     For Each F In Fd.Files
  18.         If (Not ((F.Attributes And System) = System) And (Not (F.Attributes And Hidden) = Hidden)) Then
  19.             Me.List3.AddItem F.Name
  20.         End If
  21.     Next
  22.     MsgBox "Finish"
  23. End Sub

  24. Private Sub Form_Load()
  25.     Me.List3.RowSourceType = "Value List"
  26.     Me.List3.RowSource = ""
  27. End Sub
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-10 11:19 , Processed in 0.110299 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表