类库引用
公司升级office365,导致在office365环境下开发的ACCESS版本在office2010环境中不能执行(XP系统居多)。冥思苦想,终于想到折中的解决办法。
access引用一般的原理:从本地PC种读取系统类库(可以简单理解为C盘的 System 32),直接引用其中的dll、olb等文件。
升级版本会遇到问题:就是在开发PC上有的,客户端不一定有。导致【丢失:XXXXXX】的引用错误。
分析:既然客户端不一定有该dll、olb文件,那么一起直接给他就行了
过程:
1、新建文件夹【Library】
2、将你想要的引用文件放在该文件夹下(具体引用路径可以参考这个示例:http://www.accessoft.com/article-show.asp?id=8984)
3、将客户端ACCESS和Library 放在同个文件目录下
4、代码编写
4.1、客户端登陆界面加入自动引用代码:(最好做成一个模块,方便以后各个不同的access引用)
'针对的是【missing:XXXX】引用的情况。
'折中的情况
Function M_ResetReferences()
On Error GoTo fexit:
Dim REFE As References '声明REFE为引用
Dim strFileName As String '声明strFileName为文本型变量
Dim rf
Set REFE = Application.References
'' For Each rf In REFE '在引用中循环查找,将已经引用的移除
''' Debug.Print rf.Name
'' Select Case rf.Name
'' Case "Word"
'' Application.References.Remove rf '移除
'' End Select
'' Next
strFileName = CurrentProject.Path & "\Library\MSWORD.OLB" 'dll文件存放位置
If Len(Dir(strFileName)) > 0 Then
Set rf = Application.References.AddFromFile(strFileName)
' MsgBox "引用成功!"
Else
MsgBox "引用不存在!"
End If
fexit:
' Debug.Print Err.Description, Err.Number
If Err.Number = 32813 Then
' MsgBox "引用已经存在!" & vbCrLf & "无需再引用!!", vbExclamation
End If
Exit Function
End Function
|
5、完成上面的步骤,你就可以打包程序发布出去(我直接弄成压缩包发出去,小系统不用搞得太麻烦!)
注意:
在发布前先把开发中的引用清除掉。不然系统仍然会报错的。(原因就是,在打开窗体之前,系统就会检测引用,如果引用高级的版本,它照样报错。大家多想想,这里就不再说了)