如果您的 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