不打开Excel文件读取工作表名(ADOX)

2024-03-12 08:38

本文主要是介绍不打开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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800709

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

如何利用Python实现给Excel表格截图

《如何利用Python实现给Excel表格截图》这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 我搜索了网络上的方案,感觉把 Excel 表格转换为 html 再用 platwright 截图是比China编程较顺

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P