如何在Word VBA中使用GetObject读取Access查询数据?
在Word VBA中通过GetObject读取Access查询数据的解决方法
你遇到的错误原因是:Access的Queries集合返回的是QueryDef对象,它仅存储查询的定义逻辑,并不直接包含查询返回的记录数据——这和你之前读取窗体数据的逻辑不同,窗体的记录集是直接可访问的,因此直接通过Queries("CommentSearch")![AbbrevTit]访问字段会触发不支持属性/方法的错误。
要读取查询数据,你需要基于目标查询打开一个Recordset对象,通过记录集来访问实际数据,修正后的代码如下:
Dim app As Object, rs As Object, tx As String ' 获取已运行的Access应用实例 Set app = GetObject(, "Access.Application") ' 基于目标查询打开记录集 Set rs = app.CurrentDb.OpenRecordset("CommentSearch") ' 检查记录集是否有数据 If Not rs.EOF Then ' 读取指定字段的值 tx = rs!AbbrevTit ' 将内容插入当前Word文档 Selection.TypeText Text:=tx End If ' 关闭记录集释放资源 rs.Close ' 释放对象引用 Set rs = Nothing Set app = Nothing
额外说明
- 无需添加专门的查询相关引用,使用后期绑定(将对象声明为
Object)可以兼容不同版本的Office。 - 如果需要读取查询中的多条记录,可以用循环遍历记录集:
Do While Not rs.EOF tx = rs!AbbrevTit Selection.TypeText Text:=tx & vbCrLf ' 每条记录后换行 rs.MoveNext Loop - 确保Access中的
CommentSearch查询确实包含AbbrevTit字段,且查询本身能正常返回数据(可以在Access中先运行查询验证)。
内容的提问来源于stack exchange,提问作者jatclat
相关产品推荐
相关产品推荐

