You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ACCESS2007:用VBA将Word文档类型OLE对象内容复制到备注字段

提取OLE对象中Word文档内容到备注字段的VBA代码

以下代码可实现将DB_PREV表中pre_testo字段(嵌入的Word文档OLE对象)的文本内容提取并写入同表的pre_report备注字段:

Sub ExtractWordOLEToMemo()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim wordApp As Object ' 后期绑定,无需引用Word对象库
    Dim wordDoc As Object
    Dim oleField As DAO.Field
    Dim memoField As DAO.Field
    
    ' 打开当前数据库
    Set db = CurrentDb()
    ' 打开目标表的可编辑记录集
    Set rs = db.OpenRecordset("DB_PREV", dbOpenDynaset)
    
    ' 后台初始化Word应用
    Set wordApp = CreateObject("Word.Application")
    wordApp.Visible = False ' 隐藏Word窗口,避免干扰
    
    ' 遍历所有记录
    Do While Not rs.EOF
        Set oleField = rs.Fields("pre_testo")
        Set memoField = rs.Fields("pre_report")
        
        ' 检查OLE对象是否存在
        If Not IsNull(oleField.Value) Then
            On Error Resume Next ' 捕获无法打开的OLE对象错误
            Set wordDoc = oleField.OLEFormat.Object
            If Err.Number = 0 Then
                ' 将Word文档文本写入备注字段
                memoField.Value = wordDoc.Content.Text
                rs.Update
            Else
                ' 记录错误信息到备注字段
                memoField.Value = "提取失败:" & Err.Description
                rs.Update
                Err.Clear
            End If
            On Error GoTo 0 ' 恢复默认错误处理
            wordDoc.Close SaveChanges:=False
        Else
            ' OLE字段为空时的标记
            memoField.Value = "无嵌入Word文档"
            rs.Update
        End If
        
        rs.MoveNext
    Loop
    
    ' 清理资源
    rs.Close
    wordApp.Quit
    Set wordDoc = Nothing
    Set wordApp = Nothing
    Set rs = Nothing
    Set db = Nothing
    
    MsgBox "提取完成!", vbInformation
End Sub

使用说明

  • 打开Access数据库,按Alt + F11打开VBA编辑器
  • 右键点击数据库对象 → 插入 → 模块,将代码粘贴到模块中
  • 直接运行ExtractWordOLEToMemo过程即可

可选优化(早期绑定)

若希望获得代码提示,可通过工具 → 引用勾选Microsoft Word xx.x Object Library,然后将代码中对象声明改为:

Dim wordApp As Word.Application
Dim wordDoc As Word.Document

注意事项

  • 运行前请备份数据库,避免数据意外修改
  • 仅支持嵌入的Word文档类型OLE对象,其他类型对象无法提取
  • 损坏的OLE对象会被标记错误信息,方便后续排查

内容的提问来源于stack exchange,提问作者Stefano Castro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:30:13