在EXCEL的VBA代码中调用ADO库后,请可以使用SQL对本工作簿可其他工作簿的数据进行操作,大大提高EXCEL操作数据的效率。但是,前提条件是在VBE窗口中引用ADO库。
虽然你代码写得非常酷,但是抱歉的是在用户中就是运行不起来,原因就是没引用ADO库,让用户自行引用ADO必定是个难事。
怎么办?VBA的事情VBA解决。
分享代码:来段VBA代码,轻松搞定:
Sub AddADOReference1()
Dim vbProj As Object
Dim ref As Object
Dim adoRef As Boolean
Const ADORefName As String = "Microsoft ActiveX Data Objects 6.1 Library" ' 可以根据需要调整ADO版本
' 确保允许对VB项目的访问
On Error Resume Next ' 忽略错误,以便检查是否成功设置引用
Set vbProj = ThisWorkbook.VBProject
On Error GoTo 0 ' 恢复错误处理
If vbProj Is Nothing Then
MsgBox "无法引用VBProject对象。请确保已在信任中心启用对VBA项目对象模型的访问。", vbCritical
Exit Sub
End If
adoRef = False
' 检查是否已经有ADO引用
For Each ref In vbProj.References
If ref.Name = "ADODB" Then
adoRef = True
Exit For
End If
Next ref
' 如果没有引用,则添加
If adoRef = False Then
' 注意此处使用的GUID应根据实际情况调整
vbProj.References.AddFromGuid "{2A75196C-D9EB-4129-B803-931327F72D5C}", 2, 8
MsgBox "ADO reference added!"
Else
MsgBox "ADO reference already exists."
End If
End Sub
如果报错:如果遇到Set vbProj = ThisWorkbook.VBProject报错,可能是因为Excel的安全设置禁止VBA项目访问。Excel默认禁用对VB项目的程序化访问,以防止恶意代码的执行。为了解决这个问题,你需要手动更改Excel的安全设置。
请按以下步骤操作:
启用对VB项目的信任访问:打开Excel。转到文件选项卡,然后选择选项。在Excel 选项对话框中选择信任中心。点击信任中心设置...按钮。选择宏设置。确保选中信任对VBA项目对象模型的访问复选框。点击确定两次以保存设置并关闭对话框。如果版本不对:
ADO的库有不同版本,如果本计算机上版本不对,仍然会报错。
以下信息供参考:
正确获取GUID和版本号确保你有正确的GUID和版本号。以下是一些常见的ADO版本GUID:
ADO 2.5: {00000200-0000-0010-8000-00AA006D2EA4}ADO 2.6: {00000206-0000-0010-8000-00AA006D2EA4}ADO 2.7: {EF53050B-882E-4776-B643-EDA472E8E3F2}ADO 2.8: {2A75196C-D9EB-4129-B803-931327F72D5C}检查当前已引用的库首先,我们可以查看当前引用的库,并确保目标库是否已经被引用:
Sub CheckReferences() Dim vbProj As Object Dim ref As Object Set vbProj = ThisWorkbook.VBProject For Each ref In vbProj.References Debug.Print ref.Name & " - " & ref.GUID Next refEnd Sub运行此子程序将列出当前引用的库及其GUID。检查是否已引用所需要的ADO库,并记录其GUID。