优化自动引用ADO、DAO、Excel
时 间:2018-01-17 14:32:37
作 者:KevinFan ID:47553 城市:东莞
摘 要:由于不同电脑的系统环境(操作系统、Office版本)不一致,需要根据系统环境,在程序打开时自动重新引用ADO、DAO、Excel等
正 文:
由于不同电脑的系统环境(操作系统、Office版本)不一致,需要根据系统环境,在程序打开时自动重新引用ADO、DAO、Excel,之前参考论坛示例,整理了自动引用ADO、DAO、Excel的文章(原文章:http://www.accessoft.com/article-show.asp?id=16886),后来网友@lvxin5635评价说获取Office安装路径的方式更好,今天抽空查阅了论坛的资料,使用获取Office安装目录的方式来判断Excel的引用路径,代码如下(复制黏贴到模块):
Function FileExists(ByVal strFile As String, Optional bFindFolders As Boolean) As Boolean
Dim lngAttributes As Long
lngAttributes = (vbReadOnly or vbHidden or vbSystem)
If bFindFolders Then
lngAttributes = (lngAttributes or vbDirectory)
Else
Do While Right$(strFile, 1) = "\"
strFile = Left$(strFile, Len(strFile) - 1)
Loop
End If
On Error Resume Next
FileExists = (Len(Dir(strFile, lngAttributes)) > 0)
End Function
Function FolderExists(strPath As String) As Boolean
On Error Resume Next
FolderExists = ((GetAttr(strPath) And vbDirectory) = vbDirectory)
End Function
Public Function ReAddADO()
On Error Resume Next
Dim strMDE As String: strMDE = CurrentDb.Properties("MDE")
If strMDE = "T" Then Exit Function
Dim REFE As References '声明REFE为引用
Dim strFileName As String '声明strFileName为文本型变量
Dim rf
Set REFE = Application.References
For Each rf In REFE '在引用中循环查找
If rf.Name = "ado" Then '如果名字为ADO就移动ADO的引用
Application.References.Remove rf '移除
Exit For '退出循环
End If
Next
If FolderExists("C:\Windows\SysWOW64") Then '如果是64位操作系统
strFileName = "C:\Program Files (x86)\Common Files\System\ado\msado15.dll"
Else '如果是32位操作系统
strFileName = "C:\Program Files\Common Files\System\ado\msado15.dll"
End If
Set rf = Application.References.AddFromFile(strFileName) '重新引用ADO
End Function
Public Function ReAddDAO()
On Error Resume Next
Dim strMDE As String: strMDE = CurrentDb.Properties("MDE")
If strMDE = "T" Then Exit Function
Dim REFE As References '声明REFE为引用
Dim strFileName As String '声明strFileName为文本型变量
Dim rf
Set REFE = Application.References
For Each rf In REFE '在引用中循环查找
If rf.Name = "DAO" Then '如果名字为DAO就移动DAO的引用
Application.References.Remove rf '移除
Exit For '退出循环
End If
Next
If FolderExists("C:\Windows\SysWOW64") Then '如果是64位操作系统
strFileName = "C:\Program Files (x86)\Common Files\microsoft shared\DAO\dao360.dll"
Else '如果是32位操作系统
strFileName = "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"
End If
Set rf = Application.References.AddFromFile(strFileName) '重新引用DAO
End Function
Public Function ReAddExcel()
On Error Resume Next
Dim strMDE As String: strMDE = CurrentDb.Properties("MDE")
If strMDE = "T" Then Exit Function
Dim REFE As References '声明REFE为引用
Dim strFileName As String '声明strFileName为文本型变量
Dim rf
Set REFE = Application.References
For Each rf In REFE '在引用中循环查找
If rf.Name = "Excel" Then '如果名字为Excel就移动Excel的引用
Application.References.Remove rf '移除
Exit For '退出循环
End If
Next
strFileName = SysCmd(acSysCmdAccessDir) & "EXCEL.EXE" '获取Access安装目录,也就是Office安装目录
Debug.Print strFileName
Set rf = Application.References.AddFromFile(strFileName) '自动引用Excel
End Function
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)