Excel导入导出/交互
ADO打开带密码的EXCEL文件的函数
2016-03-03 22:02:32

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