Office中国论坛/Access中国论坛

标题: 如何用代码打开VBA工程的“引用”对话框? [打印本页]

作者: mrd_wxqs    时间: 2010-4-13 20:39
标题: 如何用代码打开VBA工程的“引用”对话框?
向各位大侠请教:

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

谢谢!
作者: todaynew    时间: 2010-4-13 20:52
呵呵,干嘛非要用代码打开呢?你也太不相信微软那帮家伙了吧?
作者: mrd_wxqs    时间: 2010-4-13 23:45
这是因为从高版本环境转到低版本环境中使用时,如从Office12改到Office11下时,会出现“丢失”的引用,而要到VBA工程中重新引用,而在客户端运行时,不方便开启VBA进行配置的。
作者: beenet    时间: 2010-4-14 15:20
可加载一个空窗体如下,注册控件,再启动窗体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
作者: xryacc2    时间: 2010-4-14 16:49
本帖最后由 xryacc2 于 2010-4-14 16:50 编辑

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

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

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

大家来看看想想,如何用VBA代码来打开如上“快捷菜单”、“模块”、“对象浏览器”下的“引用(F)”命令?
作者: mrd_wxqs    时间: 2010-4-15 00:02
怎么传不上图片呢?
作者: mrd_wxqs    时间: 2010-4-15 00:05
d:\快捷菜单如何引用.jpg




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3