最近需要统计Access文件中各个对象的规模,经过一番查找和尝试用VBA写了一个小工具,只要修改里面的文件路径就可以使用了。
Sub getMdbCount()
Dim accapp As Object
tagpth = "D:\access"
Set accapp = CreateObject("Access.Application")
Set fso = CreateObject("scripting.filesystemobject")
Set gfolder = fso.getfolder(tagpth)
For Each sfil In gfolder.Files()
sfilnm = sfil.Name
sfilHz = Right(sfilnm, Len(sfilnm) - InStrRev(sfilnm, "."))
sfilNa = Left(sfilnm, InStrRev(sfilnm, ".") - 1)
nowFile = sfil.Path
If UCase(sfilHz) = "MDB" Then
accapp.OpenCurrentDatabase nowFile
newpath = tagpth & "\" & sfilNa
If Not fso.folderexists(newpath) Then
fso.createfolder (newpath)
End If
For Each modu In accapp.CurrentProject.AllModules
accapp.DoCmd.OutputTo acOutputModule, modu.Name, , newpath & "\" & modu.Name & ".bas"
Next
Set tagrng = [a65536].End(xlUp).Offset(1, 0)
tagrng.Resize(1, 5) = Array(sfilnm, accapp.CurrentData.AllQueries.Count, accapp.CurrentData.AllTables.Count _
, accapp.CurrentProject.AllForms.Count, accapp.CurrentProject.AllReports.Count)
accapp.CloseCurrentDatabase
End If
Next
MsgBox ("SUCCESS !!")
End Sub