對于ADO(Microsoft ActiveXData Object),大家并不陌生,多數VBA用戶都知道ADO是Microsoft繼ODBC技術之后,基于OLE DB的一種數據庫操作技術。這個和讀取工作表名稱有關系嗎! 答案是YES,不過大家經常用到的是Microsoft ActiveX Data Objects x(不知道如何使用的,請自行補腦),其實還有另外一ADOX的庫,其全稱是Microsoft ADO Ext. x for DDL and security,其中DDL(Data Definition Language)用于創建數據庫中的各種對象(表、視圖、索引等)。
在VBA中使用前期綁定方式創建ADOX對象,需要在VBE中添加引用,如下圖所示。
VBA代碼如下所示。
Sub getTablesName()Dim Cat As New ADOX.CatalogDim Tb As ADOX.TableDim strMsg As StringDim strPath As StringDim i As Integer'strPath = ThisWorkbook.Path & "\Excel2003.xls"'Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;hdr=yes;';Data Source=" & strPathstrPath = ThisWorkbook.Path & "\Excel2016.xlsx"Cat.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=yes;';Data Source=" & strPathstrMsg = "工作簿中共有:" & Cat.Tables.Count & " 個工作表" & vbNewLine & vbNewLineFor Each Tb In Cat.Tablesi = i + 1strMsg = strMsg & "工作表" & i & ":" & vbTab & Tb.Name & vbNewLineNextMsgBox strMsgSet Cat = NothingSet Tb = Nothing
End Sub