VBA 读取WORD表格中的内容并写入到EXCEL中

本文介绍如何使用VBA创建Word对象,打开Word文档,并遍历文档中的表格内容,将数据清洗后写入Excel。关键步骤包括建立Word对象、打开Word文档、遍历表格单元格以及应用WorksheetFunction.Clean()去除无效字符。
很多时候,我们需要从WORD文档,特别是WORD表格中提取信息,进行分析处理后放入EXCEL表中作为输出。
下面的示例是本人编写且正确运行的某软件中的代码片断,对EXCE+VBA编程读取WORD表格内容进行了演示。
    Dim iFileName As String
    Dim mFileName As String
   
    Dim i, n, c, r As Integer
                     
    Dim mWord, mDoc As Object
    Dim mTable, mCell
    Dim S, S1, S2 As String
With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "请选择【WORD勘察报告】"
            .Filters.Clear
            .Filters.Add "Word文档", "*.doc;*.docx"
            If .Show Then
                    iFileName = .SelectedItems(1)
            End If
    End With
    If iFileName = "False" Or Len(iFileName) = 0 Then Exit Sub
    Set mWord = CreateObject("Word.Application")
    Application.ScreenUpdating = False   ''WORD打开不要显示出来
    Set mDoc = mWord.Documents.Open(iFileName) ''一定要加上完整的路径
    If mDoc.tables.Count < 1 Then    ''至少需要有一个表
        MsgBox "文档中没有表格!", vbCritical
        GoTo err1
    End If
   n = 1   
   On Error Resume Next   
   For Each mTable In mDoc.tables ''定位到 分层统计表
   
      S = ""
      
      For c = 1 To mTable.Columns.Count
          mCell = mTable.cell
### 通过 Excel VBAWord 文档中的表格内容写入 Excel 工作表 在 Excel 中使用 VBA 可以实现从 Word 文档中提取表格数据,将其写入当前 Excel 工作表中。该过程通过调用 `GetObject` 或 `CreateObject` 来启动 Word 应用程序,读取文档中的表格内容将其逐行逐列地写入 Excel 表格中。 #### 1. 基本实现方法 以下是一个完整的 VBA 示例代码,用于从指定路径下的 Word 文档中读取第一个表格将数据写入当前 Excel 工作表中: ```vba Sub 导入Word表格Excel() Dim MyPath As String Dim MyName As String Dim MyDoc As Object Dim ws As Worksheet Dim n As Long Dim i As Long Set ws = ThisWorkbook.Sheets(1) MyPath = ThisWorkbook.Path & "\" MyName = Dir(MyPath & "*.doc*") n = 1 ws.Cells.Clear ' 写入标题 ws.Range("A1:F1") = Array("序号", "姓名", "性别", "出生年月", "民族", "籍贯") Do While MyName <> "" Set MyDoc = GetObject(MyPath & MyName) With MyDoc.Tables(1) For i = 1 To .Rows.Count ws.Cells(n + i - 1, 1) = i For j = 1 To .Columns.Count ws.Cells(n + i - 1, j + 1) = Left$(.Cell(i, j).Range.Text, Len(.Cell(i, j).Range.Text) - 1) Next j Next i End With MyDoc.Close SaveChanges:=False MyName = Dir Loop MsgBox "数据导入完成!" End Sub ``` 该代码通过 `GetObject` 方法打开 Word 文档读取表格内容,遍历每一行和每一列,将单元格内容写入 Excel 工作表中。为了防止 Word 表格内容中包含的换行符影响数据展示,使用 `Left$` 函数去除单元格内容末尾的换行符[^2]。 #### 2. 注意事项 - **Word 对象库引用**:需在 VBA 编辑器中添加对 Word 对象库的引用,路径为 `工具 > 引用 > 勾选 Microsoft Word xx.x Object Library`。 - **路径设置**:代码中使用 `ThisWorkbook.Path` 获取当前 Excel 文件所在路径,遍历该路径下的所有 `.doc` 和 `.docx` 文件。 - **资源占用问题**:由于 VBA 在运行过程中会调用 Windows 系统资源,若在运行过程中操作鼠标键盘或运行其他程序,可能导致资源冲突报错[^1]。 #### 3. 扩展功能 - **处理多个表格**:可以遍历 Word 文档中的所有表格,将每个表格内容依次写入 Excel 的不同区域。 - **错误处理机制**:可添加 `On Error Resume Next` 或 `On Error GoTo` 语句,确保程序在遇到异常时不会中断。 - **数据清洗与格式化**:使用 `Application.Trim` 或 `Application.Clean` 函数去除多余空格和特殊字符,提高数据准确性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值