不打开Excel文件读取工作表名(ADOX)
经常会遇到网友提问:如何实现在不打开Excel工作簿文件的前提下,读取其中的工作表名称。说实话,我不太理解这个需求应用的场景,但是我相信存在的就是合理的,既然有人提问,可能就有其应用的场景。
方法1
常规实现思路是障眼法,这是个满(qī)足(piàn)用户的好方法,工作簿文件被打开了,但是用户看不到而已。示例文件中的工作表如下图。
VBA代码如下。
Sub getTablesNameFake()Dim objApp As Excel.ApplicationDim objWk As WorkbookDim strMsg As StringDim strPath As StringDim objSht As Worksheet'strPath = ThisWorkbook.Path & "\Excel2003.xls"strPath = ThisWorkbook.Path & "\Excel2016.xlsx"Set objApp = New Excel.ApplicationobjApp.Visible = falsesSet objWk = objApp.Workbooks.Open(strPath)strMsg = "工作簿中共有:" & objWk.Sheets.Count & " 个工作表" & vbNewLine & vbNewLineFor Each objSht In objWk.Sheetsi = i + 1strMsg = strMsg & "工作表" & i & ":" & vbTab & objSht.Name & vbNewLineNextMsgBox strMsgobjWk.Close FalseobjApp.QuitSet objApp = NothingSet objWk = NothingSet objSht = Nothing
End Sub
运行代码结果如下图。
代码解析:
第9行代码新建一个Excel应用程序。
第10行代码隐藏Excel应用程序。
第11行代码打开工作簿文件,注意等号右侧必须指定objApp
,否者将在当前Excel应用程序中打开工作簿文件。
第12行代码统计工作表数量。
第13行到第16行代码循环结构遍历工作表名称。
第17行代码显示查询结果。
第18行代码关闭工作簿,并且不保存修改。
第19行代码退出新建的Excel应用程序。
方法2:
对于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
运行代码结果如下图所示。请注意与方法1
结果截图的区别,工作表的顺序与工作簿中的显示顺序不一致。
代码解析:
第2行和第3行代码声明ADOX对象。
第7行和第8行代码用于连接XLS文件,第9行和第10行代码用于连接XLSX文件,二种的区别在于OLEDB引擎版本和Properties
参数。
第11行代码统计工作表数量。
第12行到第15行代码循环结构遍历工作表名称。
第16行代码显示查询结果。
对于比较大的工作簿文件,方法2
借助ADOX引擎,其效率会更高些。
不打开Excel文件读取工作表名(ADOX)相关推荐
- 如何批量合并Excel文件和工作表 - Excel合并器使用教程
Excel是人们用于创建日常工作表和统计信息的最流行的工具,在我们工作中经常接触到Excel的XLSX和XLS格式文件.不少朋友应该有时会发现,管理太多的Excel工作表和文件是一件头疼的事情,经常需 ...
- 用ado打开Excel文件时报外部表不是预期的格式的解决方法
在用ado将Excel表格数据导入到数据库时,ado打开Excel文件报"外部表不是预期的格式"的错误码.其原因是Excel数据格式不是标准的Microsoft Excel的数据格 ...
- 如何获得excel文件名和工作表名
一.如何获得excel当前文件名和工作表名 方法一:已经指定工作薄 当前文件名公式=MID(CELL("filename",A1),FIND("[",CELL( ...
- kettle读取json文件并读取数据_Labview打开Excel文件读取数据
Labview有几种打开excel的方式,各有利弊. 大水怪出没请注意:Labview使用Excel处理数据(打开Excel)zhuanlan.zhihu.com 这一篇介绍了通过使用Active打 ...
- 快速撤销excel文件的工作表保护
excel文件设置了工作表保护,想要编辑文件,在撤销的时候发现需要输入密码才能够撤销,但是并不知道密码该怎么办,这种情况,就可以使用第三方软件进行解除限制.比如奥凯丰 EXCEL解密大师. [EXCE ...
- 关于Excel下通过VBA实现工作簿文件下工作表的合并
对于普通使用者而言,Excel是一个比较强大的数据处理工具.一般公司的普通职员常使用它来完成数据的录入分析,但是当面对处理经由多人按统一模板统计完成的录入数据分析时,数据将分散存放在多个.xlsx文件 ...
- python怎么打开excel文件并处理_python处理excel文件
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 可从这里下载https://pypi.python.org/pypi.下面分别记录 ...
- Python自动化必会技能-Excel文件读取
01 重点 在自动化测试过程中,经常需要使用excel文件来存储测试用例,那么在表格内设计好了测试用例数据后,如何通过自动化读取呢?此时就需要测试小姐姐动手写"代码"了~ 本文主要 ...
- python实现Excel文件读取的程序(附源代码)
python实现Excel文件读取的程序 前一段时间帮一个朋友用python写了一个读Excel程序操作的程序,具体要求为:读取两个Excel文件,根据其中某个特征的特征值对这两个文件进行取交集操 ...
最新文章
- tensorflow filter_variables
- 脱式计算机在线使用,脱式计算,
- 局域网查看计算机慢,局域网内的电脑访问共享文件夹速度很慢如何解决
- 打造最舒适的webview调试环境
- 关系数据库——sql增删改
- iOS相同字符串保存地址唯一
- UVA10909 Lucky Number题解
- jira7.3.6添加导出excel的按钮
- Mysql记录历史执行的sql
- 创建一个SpringBoot项目(IDEA版本,保姆级教程)
- 搭建 Extmail企业邮件服务
- 如何测试电脑网速情况
- html5设计页面背景颜色,网页背景设计全攻略
- Qt中波兰语不显示尖音符
- git push时提示邮箱格式不正确
- 如何从初级程序员变成高级程序员?
- CyberArk被评为2021年Gartner特权访问管理魔力象限的领导者
- python 多态 知乎_Python鸭子类型和多态
- Vmware 虚拟机设置主机映射端口
- Fumark支持SLI双卡测试设置
热门文章
- eos 区块链 java 开发_EOS 交易验证的主要思路 - EOS 区块链开发实战
- docker搭建企业级habor仓库
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G	 旋转矩阵 【模拟】
- jvm的内存分布,参数配置 和 GC处理机制
- jbox弹窗_强大的jquery弹出层插件jBox
- 有道云笔记客户端的下载和安装、使用(博主推荐)
- 南京大学计算机专业拂晓,南京大学2020年计算机学科录取推免生222人,全部来自211高校...
- 怎么把虚拟机的计算机弄到桌面,Win10自带的虚拟机功能,教你这样设置,免费让一台电脑变3台!...
- Asuswrt RT-AC68U 华硕路由器文件删除漏洞 栈溢出
- python爬虫和医学数据_【爬虫】(八)Python之爬虫和数据小解析