




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用VBA提取路径下所有工作簿的工作表名(四个方法) 方法一:Open方法思路:遍历路径下的工作簿并用Workbooks.Open打开,再遍历工作表名Workbooks.Open打开一个工作簿。语法表达式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)表达式 一个代表 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 '禁计算 Set wbk = ThisWorkbook myPath = ThisWorkbook.Path & "&qu
3、ot; myFile = Dir(myPath & "*.xls") n = CreateObject("Scripting.FileSystemObject").GetFolder(myPath).Files.Count - 1 '计算文件个数,减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 '自动计算End Sub复制代码方法二:GetObject方法思路:遍历路径下的工作簿并使用 GetObject 函数访问文件,再获取工作表名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 '计算文件个数,
7、减1不包括自身 ReDim arr(1 To 1000, 1 To n) Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿执行 j = j + 1 i = 1 arr(1, j) = Left(myFile, InStrRev(myFile, ".") - 1) '去后辍 With GetObject(myPath & myFile) '使用 GetObject 函数可以访问文
8、件 For i = 1 To .Worksheets.Count '遍历文件的工作表数 arr(i + 1, j) = .Worksheets(i).Name Next End With GetObject(myPath & myFile).Close '关闭 End If myFile = Dir Loop Application.ScreenUpdating = True '自动计算 Range("A1").Resize(i, j) = arr '输出End Sub复制代码方法三:OpenSchema 方法思路:遍历路径下
9、的工作簿并使用ADO访问文件,再用OpenSchema 获取工作表名PS:使用ADO查询大量工作簿速度较快,但ADO对字段、数据类型等要求较严格,而且ADO取得的工作表名与工作表真实的排序没有关系OpenSchema 方法从提供者获取数据库模式信息。语法Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)querytype 所要运行的模式查询类型 Set recordset = connection.OpenSchema (adSchemaTables) 创建数据表记录集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 '计算文件个
11、数,减1不包括自身 ReDim arr(1 To 1000, 1 To n) '定义arr,最大工作表数1000 Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿执行 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),创建数据表记录集 Do Until rs.EOF If rs.Fields("TABLE_TYPE") = "TABLE"
13、Then i = i + 1 s = Replace(rs("TABLE_NAME").Value, "'", "") '去除""(数字工作表) 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复制代码方法四:ADOX.Catalog 方法思路:遍历路径下的工作簿调用的是ADOX.Catalog组件访问文件,再遍历对象Table 获取工作表名 For Each MyTable In TablesADOX.CatalogMicrosoft? ActiveX? Data Objects Extensions for Data Definition Language and Security (ADOX) 是对 ADO 对象和编程模型的扩展。ADOX 包括用于模式创建和修改的对
15、象,以及安全性。由于它是基于对象实现模式操作,所以用户可以编写对各种数据源都能有效运行的代码,而与它们原始语法中的差异无关。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 '计算文件个数,减1不包括自身 ReDim arr(1 To 1000, 1 To n) Do While myFile <> "" If myFile <> ThisWorkbook.Name Then '不等于本工作簿执行 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市交通规划与交通信息管理重点基础知识点
- 2025年软考网络管理员逆袭计划试题及答案
- 2024年海南省知识产权局下属事业单位真题
- 2024年海南省民政厅下属事业单位真题
- 2024年山东省淡水渔业研究院招聘笔试真题
- 数据库与网络管理关系试题及答案
- 2024年黄山新区妇产医院招聘笔试真题
- 2024年北海市合浦县司法局招聘笔试真题
- 行政法学策划能力试题及答案
- 未来科技变革下的公司战略与风险预测试题及答案
- 保温杯生产工艺流程
- GB/T 6482-2007凿岩用螺纹连接钎杆
- 理正深基坑算例
- GB 28375-2012混凝土结构防火涂料
- 公司休假销假单模板
- 《基于杜邦分析法的企业财务分析国内外文献综述》
- 全国高中数学联赛广东省预赛试题及解答
- DB33T 2226-2019 空气负(氧)离子观测与评价技术规范-纯图
- 高中政治教学的经验分享课件
- 办公室事故防范(典型案例分析)
- 工期定额-民用建筑
评论
0/150
提交评论