技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 21536
|
本帖最后由 todaynew 于 2014-11-27 10:27 編輯
我們用SQL或ADO操作Excel表時(shí),需要指定sheet名稱。一般情況下,我們對(duì)sheet的名稱是已知的。但是,有時(shí)候標(biāo)簽名稱不確定,或者標(biāo)簽名稱是按照某種編碼方式產(chǎn)生的。這種情況下,得到標(biāo)簽名稱就十分必要了。我們當(dāng)然可以通過(guò)打開(kāi)Excel表對(duì)象,然后遍歷sheets來(lái)得到標(biāo)簽名稱,但這種處理效率較低,也很麻煩。那么是否可以在不打開(kāi)Excel表的情況下,得到標(biāo)簽名稱呢?答案是肯定的。
由于我們可以將Excel表作為數(shù)據(jù)源進(jìn)行連接,因此我們就可以通過(guò)這個(gè)連接的某些屬性得到Excel表所包含的標(biāo)簽(相當(dāng)于table)。在這個(gè)處理中我們需要引用或創(chuàng)建ADOX.Catalog對(duì)象,這個(gè)對(duì)象包含了tables屬性,由此得到table以及它的名稱。
Function GetSheetName(filepath As String, n As Integer) As String
'功能:返回標(biāo)簽名稱
'引用:Mocrosoft ADO Ext 2.8 for DDL and Securty
'參數(shù):filepath--Excel文件名,n--標(biāo)簽序號(hào)(從1開(kāi)始)
Dim conn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim sheetname As String
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath & ";Extended Properties=Excel 8.0;"
conn.Open
Set cat.ActiveConnection = conn
sheetname = cat.Tables(n - 1).Name
conn.Close
Set cat = Nothing
Set cnn = Nothing
GetSheetName = sheetname
End Function
|
|