如果您的 Excel 工作簿受密码保护,即使在连接设置中提供了正确的密码,也无法打开它以访问其数据,除非已在 Microsoft Excel 应用程序中打开了该工作簿文件。"
所以间接的办法,是先用Excel打开它,然后用ADO连接,使用完,再关闭它。此方法同样适用在Access VBA代码中使用,示例是在Excel VBA中使用
当然如果你感觉不爽,也可直接用excel.application 来控制它。
Public Function gf_OpenXlsByAdo(strFile As String, strPass As String)
Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strConnStr As String
On Error GoTo Err_Handler
'先用Excel打开它
Workbooks.Open Filename:=ThisWorkbook.Path & "\AccessCnTest.xls", Password:=strPass '先用excel把带密码的xls文件打开
strConnStr = "provider=microsoft.jet.oledb.4.0;extended properties='Excel 8.0;HDR=YES';data source=AccessCnTest.xls" '再用ADO打开这个文件,使用相对路径
conn.Open strConnStr
Set rst = conn.Execute("SELECT * FROM [AccessCnTest$] Where 我的条件 ='123'")
Do While Not rst.EOF
'循环处理数据代码
Loop
MsgBox "处理完成!"
Workbooks("AccessCnTest.xls").Close ' 关闭密码文件
Exit Function
Err_Handler:
MsgBox Err.Description
End Function
