




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用VBA提取路徑下所有工作簿的工作表名(四個(gè)方法) 方法一:Open方法思路:遍歷路徑下的工作簿并用Workbooks.Open打開,再遍歷工作表名Workbooks.Open打開一個(gè)工作簿。語法表達(dá)式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)表達(dá)式 一個(gè)代表 Workbooks 對
2、象的變量。Sub Open法() Dim arr Dim n&, i&, j&, s$ Dim wb As Workbook, sht As Worksheet, wbk As Workbook Dim myPath$, myFile$ Application.ScreenUpdating = False '禁刷新 Application.Calculation = xlManual '禁計(jì)算 Set wbk = ThisWorkbook myPath = ThisWorkbook.Path & "&qu
3、ot; myFile = Dir(myPath & "*.xls") n = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1 '計(jì)算文件個(gè)數(shù),減1不包括自身 ReDim arr(1 To 1000, 1 To n) Do While myFile <> "" If myFile <> wbk.Name Then j = j + 1 i = 1 arr(
4、1, j) = Left(myFile, InStrRev(myFile, ".") - 1) '去后輟 Set wb = Workbooks.Open(myPath & "" & myFile) '打開工作簿 For Each sht In wb.Sheets '遍歷工作表 i = i + 1 arr(i, j) = sht.Name Next wb.Close End If myFile = Dir Loop wbk.ActiveSheet.Range("A1").Resiz
5、e(i, j) = arr '輸出 Application.Calculation = xlAutomatic '刷新 Application.ScreenUpdating = True '自動計(jì)算End Sub復(fù)制代碼方法二:GetObject方法思路:遍歷路徑下的工作簿并使用 GetObject 函數(shù)訪問文件,再獲取工作表名GetObject返回文件中的 ActiveX 對象的引用。語法GetObject(pathname , class)Sub GetObject法() Dim cat As Object, MyTable As Object Dim n&
6、amp;, i&, j&, s$ Dim myPath$, myFile$ Application.ScreenUpdating = False '禁刷新 myPath = ThisWorkbook.Path & "" myFile = Dir(myPath & "*.xls") n = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1 '計(jì)算文件個(gè)數(shù),
7、減1不包括自身 ReDim arr(1 To 1000, 1 To n) Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿執(zhí)行 j = j + 1 i = 1 arr(1, j) = Left(myFile, InStrRev(myFile, ".") - 1) '去后輟 With GetObject(myPath & myFile) '使用 GetObject 函數(shù)可以訪問文
8、件 For i = 1 To .Worksheets.Count '遍歷文件的工作表數(shù) arr(i + 1, j) = .Worksheets(i).Name Next End With GetObject(myPath & myFile).Close '關(guān)閉 End If myFile = Dir Loop Application.ScreenUpdating = True '自動計(jì)算 Range("A1").Resize(i, j) = arr '輸出End Sub復(fù)制代碼方法三:OpenSchema 方法思路:遍歷路徑下
9、的工作簿并使用ADO訪問文件,再用OpenSchema 獲取工作表名PS:使用ADO查詢大量工作簿速度較快,但ADO對字段、數(shù)據(jù)類型等要求較嚴(yán)格,而且ADO取得的工作表名與工作表真實(shí)的排序沒有關(guān)系OpenSchema 方法從提供者獲取數(shù)據(jù)庫模式信息。語法Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)querytype 所要運(yùn)行的模式查詢類型 Set recordset = connection.OpenSchema (adSchemaTables) 創(chuàng)建數(shù)據(jù)表記錄集Sub OpenSchema法() D
10、im arr, n&, i&, j&, s$ Dim myPath$, myFile$ Dim cnn As Object, rs As Object myPath = ThisWorkbook.Path & "" myFile = Dir(myPath & "*.xls") n = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1 '計(jì)算文件個(gè)
11、數(shù),減1不包括自身 ReDim arr(1 To 1000, 1 To n) '定義arr,最大工作表數(shù)1000 Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿執(zhí)行 j = j + 1 i = 1 arr(1, j) = Left(myFile, InStrRev(myFile, ".") - 1) '去后輟 Set cnn = CreateObject("ADODB.Connec
12、tion") cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & myPath & myFile Set rs = cnn.OpenSchema(20) 'Set rs = cnn.OpenSchema(adSchemaTables),創(chuàng)建數(shù)據(jù)表記錄集 Do Until rs.EOF If rs.Fields("TABLE_TYPE") = "TABLE"
13、Then i = i + 1 s = Replace(rs("TABLE_NAME").Value, "'", "") '去除""(數(shù)字工作表) If Right(s, 1) = "$" Then arr(i, j) = Left(s, Len(s) - 1) '去除$號 End If rs.MoveNext Loop End If myFile = Dir Loop rs.Close cnn.Close Set rs = Nothing Set cnn = Nothin
14、g Range("A1").Resize(i, j) = arr '輸出End Sub復(fù)制代碼方法四:ADOX.Catalog 方法思路:遍歷路徑下的工作簿調(diào)用的是ADOX.Catalog組件訪問文件,再遍歷對象Table 獲取工作表名 For Each MyTable In TablesADOX.CatalogMicrosoft? ActiveX? Data Objects Extensions for Data Definition Language and Security (ADOX) 是對 ADO 對象和編程模型的擴(kuò)展。ADOX 包括用于模式創(chuàng)建和修改的對
15、象,以及安全性。由于它是基于對象實(shí)現(xiàn)模式操作,所以用戶可以編寫對各種數(shù)據(jù)源都能有效運(yùn)行的代碼,而與它們原始語法中的差異無關(guān)。Sub ADOX法() Dim cat As Object, MyTable As Object Dim n&, i&, j&, s$ Dim myPath$, myFile$ myPath = ThisWorkbook.Path & "" myFile = Dir(myPath & "*.xls") n = CreateObject("Scr
16、ipting.FileSystemObject").GetFolder(myPath).Files.Count - 1 '計(jì)算文件個(gè)數(shù),減1不包括自身 ReDim arr(1 To 1000, 1 To n) Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿執(zhí)行 j = j + 1 i = 1 arr(1, j) = Left(myFile, InStrRev(myFile, ".") - 1) '去后輟 Set cat = CreateObject("ADOX.Catalog") cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & myPath & myFile For Each MyTable In cat.Tables If MyTable.Type = "TABLE" Then s = Repla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全球化背景下企業(yè)資源配置效率研究
- 營業(yè)線施工安全:確保作業(yè)安全的全面措施
- 循環(huán)經(jīng)濟(jì)視域下再制造產(chǎn)業(yè)集群的競爭力評價(jià)體系研究
- 公司總監(jiān)績效管理辦法
- 建材廠生產(chǎn)安全事故風(fēng)險(xiǎn)評估報(bào)告
- 新工科背景下數(shù)據(jù)庫系統(tǒng)課程的賽教融合與創(chuàng)新實(shí)踐探索
- 農(nóng)產(chǎn)品品牌發(fā)展戰(zhàn)略研究
- 安全生產(chǎn)法發(fā)布
- 汽油模型燃料ReaxFF反應(yīng)動力學(xué)研究
- 消防安全培訓(xùn)員
- 顱骨骨折 課件
- 工程造價(jià)咨詢服務(wù)方案(技術(shù)方案)
- DB44-T 1948-2016 移動通信固定終端天線
- 2023廣西公需科目真題(關(guān)于人才工作的重要論述)
- 管道非開挖修復(fù)方案
- 熔鑄作業(yè)指導(dǎo)書
- 車站旅客地道施工方案
- 《小米公司融資問題研究10000字(論文)》
- YS/T 3019-2013氰化堆浸提金工藝安全生產(chǎn)技術(shù)規(guī)范
- GB/T 18745-2006地理標(biāo)志產(chǎn)品武夷巖茶
- GB/T 13323-2009光學(xué)制圖
評論
0/150
提交評論