Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2737|回复: 8

[已解决]怎样让TreeView显示当前文件夹内数据库表名

[复制链接]
发表于 2013-2-5 09:17 | 显示全部楼层 |阅读模式
请各位大侠帮忙!附件文件夹内有个数据源文件夹,数据源文件夹内由若干个数据库,打开窗体后TreeView显示所有数据库名,请问怎样让所有数据库父目录下显示数据库内的所有表名作为子目录。谢谢! 显示数据库表名.rar (40.86 KB, 下载次数: 15)
发表于 2013-2-5 09:24 | 显示全部楼层
你把上次做的再改进下,加入工作表的部分代码就可以了。
回复

使用道具 举报

 楼主| 发表于 2013-2-5 09:40 | 显示全部楼层
不懂这个,上次那个我没打开,麻烦您在这个附件里写下好吗!谢谢!
回复

使用道具 举报

发表于 2013-2-5 09:46 | 显示全部楼层
我在EXCEL里写个成不?
ACCESS的还不太会。
窗体也没找到。
回复

使用道具 举报

 楼主| 发表于 2013-2-5 09:49 | 显示全部楼层
本帖最后由 wsq7668 于 2013-2-5 09:51 编辑

我的只显示数据库名,但是子目录表名不知道如何显示,数据库名显示代码,Dim CunZai As Boolean '定义变量
Dim fso As New Scripting.FileSystemObject, i
Dim sFolder As Scripting.Folder
Dim sFolder_1 As Scripting.Folder
Dim FileName As String, myName As String '显示文件夹
Set sFolder = fso.GetFolder(App.Path) '
For Each sFolder_1 In sFolder.SubFolders
Next '显示文件
FileName = App.Path & "\数据源\"
myName = Dir(FileName)
Do While myName <> ""
TreeView1.Nodes.Add.Text = myName
myName = Dir
Loop

未命名11111.jpg
回复

使用道具 举报

发表于 2013-2-5 11:02 | 显示全部楼层
  1. Sub TEST()
  2.     Dim filename$
  3.     Dim Path$
  4.     Dim access As Object, tb As Object
  5.     Path = ThisWorkbook.Path & Application.PathSeparator
  6.     Set access = CreateObject("access.Application")
  7.     filename = Dir(Path & "*.mdb")

  8.     Do While Len(filename)
  9.         access.OpenCurrentDatabase Path & filename
  10.         Debug.Print filename
  11.         For Each tb In access.CurrentData.AllTables
  12.             If Not tb.Name Like "MSys*" Then Debug.Print tb.Name
  13.         Next

  14.         access.CloseCurrentDatabase
  15.         filename = Dir
  16.     Loop
  17.     access.Quit 2
  18. End Sub
复制代码
查帮助写的。
你可以参考下。
回复

使用道具 举报

 楼主| 发表于 2013-2-5 11:03 | 显示全部楼层
先谢谢您解答!我来试下!
回复

使用道具 举报

发表于 2013-2-5 11:18 | 显示全部楼层    本楼为最佳答案   
  1. Function getAccessTable(ByVal fullname As String)
  2.     Dim filename$
  3.     Dim Path$
  4.     Dim access As Object, tb As Object
  5.     Dim i As Byte
  6.     Dim arr() As String
  7.     Set access = CreateObject("access.Application")
  8.     access.OpenCurrentDatabase fullname
  9.     For Each tb In access.CurrentData.AllTables
  10.         If Not tb.Name Like "MSys*" Then
  11.             i = i + 1
  12.             ReDim Preserve arr(1 To i)
  13.             arr(i) = tb.Name
  14.         End If
  15.     Next
  16.     access.CloseCurrentDatabase
  17.     access.Quit 2
  18.     If i > 0 Then
  19.         getAccessTable = arr
  20.     Else
  21.         getAccessTable = False
  22.     End If
  23. End Function

  24. Sub tset()
  25.     Dim arr
  26.     arr = getAccessTable(ThisWorkbook.Path & "\数据一.mdb")
  27.     Stop
  28. End Sub
复制代码
做成函数。
如果指定的MDB里有表的话,会把所有的名字放在一个数组里返回,否则返回FALSE。
数组下边界是从1开始。
回复

使用道具 举报

发表于 2013-2-5 11:19 | 显示全部楼层
暂时没有针对报错做处理,第一次接触ACCESS VBA。
所以要查找时,请注意不要针对已经打开的MDB文件做查询。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-16 14:25 , Processed in 0.380295 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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