PowerPoint VBA能否用连接字符串读取Word表格生成Recordset?
用ACE OLEDB读取Word表格生成Recordset并执行SQL查询
可以通过Microsoft ACE OLEDB驱动实现从Word文档表格生成Recordset,并且支持SQL查询,和你读取Excel的代码逻辑完全统一,仅需修改连接字符串部分。
连接字符串与完整代码示例
以下是适配Word文档的VBA代码,结构和你现有的Excel读取代码一致:
Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String Dim wordFilePath As String wordFilePath = "C:\Your\Path\To\Document.docx" '替换为你的Word文档路径 Set cn = New ADODB.Connection With cn .Provider = "Microsoft.ACE.OLEDB.12.0" '核心连接字符串:Word文档的扩展属性设置为Word 12.0 Xml .ConnectionString = "Data Source=" & wordFilePath & ";" & _ "Extended Properties=""Word 12.0 Xml;HDR=YES"";" .Open '示例SQL查询:读取第一个表格中姓氏为SMITH的记录 sql = "SELECT * FROM [Table1] WHERE LASTNAME = 'SMITH'" Set rs = .Execute(sql) '遍历Recordset处理数据 Do While Not rs.EOF Debug.Print rs("LASTNAME").Value & ", " & rs("FIRSTNAME").Value rs.MoveNext Loop rs.Close .Close End With Set rs = Nothing Set cn = Nothing
关键说明
- 表格引用规则:
- Word中的第一个表格用
[Table1]表示,第二个用[Table2],以此类推 - 如果设置
HDR=YES,驱动会将表格第一行识别为列名;若表格无表头,设置HDR=NO,列名将自动命名为F1、F2等
- Word中的第一个表格用
- 驱动兼容性:确保安装了Microsoft Access Database Engine 2010 Redistributable(包含ACE 12.0驱动),32/64位版本要和你的Office版本匹配
- 文档状态:连接时Word文档必须处于关闭状态,否则会出现文件锁定错误
对比循环读取的优势
- 支持SQL的筛选、排序、聚合等操作,无需手动遍历判断
- 代码结构和Excel读取逻辑完全一致,仅需替换数据源路径和连接字符串的扩展属性
- 对于大型表格,通过OLEDB读取的速度远快于逐行逐列循环
内容的提问来源于stack exchange,提问作者thardy
相关产品推荐
相关产品推荐

