设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 6576|回复: 9
打印 上一主题 下一主题

[模块/函数] 如何用代码打开VBA工程的“引用”对话框?

[复制链接]
跳转到指定楼层
1#
发表于 2010-4-13 20:39:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
向各位大侠请教:

Access运行时,如发现有丢失的引用,如何用代码打开VBA工程的“引用”对话框进行勾选呢?

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-4-13 20:52:30 | 只看该作者
呵呵,干嘛非要用代码打开呢?你也太不相信微软那帮家伙了吧?
3#
 楼主| 发表于 2010-4-13 23:45:05 | 只看该作者
这是因为从高版本环境转到低版本环境中使用时,如从Office12改到Office11下时,会出现“丢失”的引用,而要到VBA工程中重新引用,而在客户端运行时,不方便开启VBA进行配置的。
4#
发表于 2010-4-14 15:20:40 | 只看该作者
可加载一个空窗体如下,注册控件,再启动窗体2打开实际功能。另外也将控件打包成安装包。
Private Sub Form_Open(Cancel As Integer)

    DoCmd.RunCommand acCmdAppMinimize
    Me.Visible = False

    AutoRegFile "控件名"

    DoCmd.Close
    DoCmd.OpenForm "窗体2"
End Sub

'这是网上高手写的
Function AutoRegFile(FileName As String)
    Dim reged As Boolean
    Dim RegFile1 As String
    Dim RegFile2 As String
    Dim BeReg As String, strDtn As String, strDtn1 As String
    Dim ref As Reference

    Dim RetVal
    BeReg = CurrentProject.Path & "\ocx\" & FileName          '控件存放位置,例子中是放在工程当前目录下ocx子目录
    strDtn = Environ("windir") & "\system\" & FileName           '返回系统路径
    strDtn1 = Environ("windir") & "\system32\" & FileName           '返回系统路径
    On Error Resume Next

    RegFile1 = Environ("windir") & "\system\regsvr32.exe "
    RegFile2 = Environ("windir") & "\system32\regsvr32.exe "

    If Dir(RegFile1) <> "" Or Dir(RegFile2) <> "" Then
        If Dir(RegFile1) <> "" Then
            FileCopy BeReg, strDtn
            RegFile1 = RegFile1 & "/s" & " " & strDtn
            RetVal = Shell(RegFile1, 1)
'            Set ref = References.AddFromFile(Environ("windir") & "\system\" & FileName)
        Else
            FileCopy BeReg, strDtn1
            RegFile2 = RegFile2 & "/s" & " " & strDtn1
            RetVal = Shell(RegFile2, 1)
'            Set ref = References.AddFromFile(Environ("windir") & "\system32\" & FileName)    '设置引用
        End If
    Else
        MsgBox "找不到regsvr32.exe文件,你可能无法使用本软件!", vbCritical, "无法自动注册控件"
    End If
End Function
5#
发表于 2010-4-14 16:49:12 | 只看该作者
本帖最后由 xryacc2 于 2010-4-14 16:50 编辑

不用打开引用,只要你把当时引用的控件随access文件带着,就不会出现丢失的现象。这尤其对于word和excel的引用最省事。
6#
 楼主| 发表于 2010-4-14 17:29:21 | 只看该作者
谢谢 beenet 的大力帮助,我认真学习学习!

我认为 xryacc2 的提议还不是很妥当,就算把在Office12和Office11下引用的控件都带着,但从Office12环境中改到Office11下使用时,还是会提示丢失引用的。
7#
 楼主| 发表于 2010-4-14 23:59:12 | 只看该作者
本帖最后由 mrd_wxqs 于 2010-4-15 00:06 编辑

file:///d:/快捷菜单如何引用.jpg

大家来看看想想,如何用VBA代码来打开如上“快捷菜单”、“模块”、“对象浏览器”下的“引用(F)”命令?
8#
 楼主| 发表于 2010-4-15 00:02:46 | 只看该作者
怎么传不上图片呢?
9#
 楼主| 发表于 2010-4-15 00:05:27 | 只看该作者
d:\快捷菜单如何引用.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 18:12 , Processed in 0.113855 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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