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

如何使用VBA将Word表格中的数据以数值格式提取到Excel?

解决Word表格数据提取为Excel数值格式的问题

问题核心在于Word表格单元格的Range.Text会附带隐藏的段落标记(Chr(13)和Chr(7)),这些字符会让Excel把内容识别成文本而非数值。同时你的文件路径拼接存在错误,会导致路径无效,下面是修正后的完整方案:

修正后的代码

Sub extractData()
    Dim wd As New Word.Application
    Dim doc As Word.Document
    Dim tbl As Word.Table
    Dim sh As Worksheet
    Dim cellText As String
    Dim i As Integer

    wd.Visible = True

    ' 修正路径:直接使用完整有效路径,避免盘符重复拼接的错误
    Set doc = wd.Documents.Open("C:\Users\itays\Desktop\TTd.docx")
    Set tbl = doc.Tables(5)
    Set sh = ActiveSheet

    ' 提取第一列文本(同样清理控制字符,避免不必要的格式问题)
    For i = 1 To 17
        sh.Cells(i, 1).Value = Replace(Replace(tbl.Rows(i).Cells(1).Range.Text, Chr(13), ""), Chr(7), "")
    Next

    ' 提取第二列并转换为数值格式
    For i = 1 To 17
        ' 先清理Word单元格里的隐藏控制字符
        cellText = Replace(Replace(tbl.Rows(i).Cells(2).Range.Text, Chr(13), ""), Chr(7), "")
        ' 用Val()函数转换为数值,自动忽略非数字内容,容错性更强
        sh.Cells(i, 2).Value = Val(cellText)
    Next

    Range("a:e").Columns.AutoFit

    doc.Close SaveChanges:=False
    wd.Quit
    Set wd = Nothing
End Sub

关键修改说明

  • 清理控制字符:用Replace函数移除Word文本里的回车(Chr(13))和制表符(Chr(7)),这是Excel识别为文本的主要原因。
  • 数值转换:Val()函数能将清理后的文本转为数值,还能自动处理带非数字前缀的内容(比如"¥500"会转为500),比强制转换函数容错性更好。
  • 修复路径错误:原代码中ActiveWorkbook.Path & "C:\Users..."会生成类似C:\xxx\C:\Users...的无效路径,直接使用完整路径即可;若Word文件和Excel同目录,可改为ActiveWorkbook.Path & "\TTd.docx"。
  • 优化资源释放:退出Word应用并释放对象,避免后台残留进程占用系统资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:31:05