Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]根据特定要求获取指定的ACCESS

MICHAELSUNNY  发表于:2010-09-03 15:53:42  
复制

请教高手:
      如何在一个大文件夹内,获取指定名称要求的ACCESS文件。案例:
情况——ABC文件夹下,包含子文件夹,共包含有600个ACCESS文件;
目的——提取所有文件名包含关键字,“ACCESSOFT”、“提问”、“201008”的文件。(用户可选)
             找到这些文件中包含关键字,“201008”的表或窗体。(用户可选)最好还有查询
要求——VBA自动,脱离人工。平时不用这些文件时,不产生任何数据关联.

 

Top
煮江品茶 发表于:2010-09-03 16:07:48
煮江品茶 发表于:2010-09-03 16:13:03

原文实例中好像缺两个函数,加进去公共模块中:

Function GetObject(ObjectType As String, Accessname As String) As String
'功能:获取其他Access数据库中的对象字符串
'参数:ObjectType--类型参数,AllForms=窗体;AllReports=报表;AllMacros=宏;AllModules=模块;AllDataAccessPages=数据访问页
'     Accessname --Access数据库名称字符串
Dim appAccess As New Access.Application
Dim obj As AccessObject
Dim objs As Object
appAccess.OpenCurrentDatabase Accessname
appAccess.Visible = True
Select Case ObjectType
    Case "AllForms"
        Set objs = appAccess.CurrentProject.AllForms
    Case "AllReports"
        Set objs = appAccess.CurrentProject.AllReports
    Case "AllMacros"
        Set objs = appAccess.CurrentProject.AllMacros
    Case "AllModules"
        Set objs = appAccess.CurrentProject.AllModules
    Case "AllDataAccessPages"
        Set objs = appAccess.CurrentProject.AllDataAccessPages
    Case Else
        Exit Function
End Select

For Each obj In objs
    If obj.IsLoaded = False Then
        GetObject = GetObject & obj.Name & ";"
    End If
Next obj
appAccess.CloseCurrentDatabase
Set appAccess = Nothing
End Function


Function GetObjCtl(ObjectType As String, Accessname As String, Objectname As String) As String
'功能:获取其他Access数据库中的对象中控件字符串
'参数:ObjectType--类型参数,AllForms=窗体;AllReports=报表;AllMacros=宏;AllModules=模块;AllDataAccessPages=数据访问页
'     Accessname--Access数据库名称字符串
'     Objectname --对象名称字符串
Dim appAccess As New Access.Application
Dim ctls As Controls
Dim ctl As Control
Dim obj As Object

appAccess.OpenCurrentDatabase Accessname
appAccess.Visible = True
Select Case ObjectType
    Case "AllForms"
        appAccess.DoCmd.OpenForm Objectname
        Set obj = appAccess.Forms(Objectname)
    Case "AllReports"
        appAccess.DoCmd.OpenReport Objectname, acViewPreview
        Set obj = appAccess.Reports(Objectname)
    Case "AllDataAccessPages"
        appAccess.DoCmd.OpenDataAccessPage Objectname
        Set obj = appAccess.DataAccessPages(Objectname)
    Case Else
        Exit Function
End Select

Set ctls = obj.Controls
For Each ctl In ctls
    GetObjCtl = GetObjCtl & ctl.Name & ";"
Next ctl

appAccess.CloseCurrentDatabase
Set appAccess = Nothing
End Function



MICHAELSUNNY 发表于:2010-09-03 16:39:12
多谢,品茶的老头.

总记录:3篇  页次:1/1 9 1 :