首页 > 解决方案 > 从word中提取段落到excel

问题描述

我正在尝试从 word 中提取特定段落到 excel。我的代码有关于“.Text”部分的错误:“找不到方法或数据”。知道为什么吗?谢谢!

Sub extract()
Dim p As Object
Dim xl
Dim wb, ws, xlr
Dim a As Variant
Dim b As Variant

Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.Workbooks.Add
Set ws = wb.Worksheets(1)
i = 1 
j = 1 
c = 1 
For Each p In ActiveDocument.Paragraphs

If Len(p) > 200 Then
Set xlr = ws.Range("b" & i)
ActiveDocument.Paragraphs(j).Range.Copy
xlr.Value = ActiveDocument.Range.Paragraphs(j).Text
Set xlr = ws.Range("a" & i)
c = j - 1
If c > 1 Then
ActiveDocument.Paragraphs(c).Range.Copy
xlr.Value = ActiveDocument.Range.Paragraphs(c).Text

End If
ws.Range("c" & i) = Date
i = i + 1
End If

j = j + 1
Next
End Sub 

标签: excelvbams-word

解决方案


  1. 确保在工具 | 选项 | 编辑器您已选中“需要变量声明”,如下所示。这将自动放置Option Explicit在您创建的每个新模块的顶部,并防止您在未先声明变量的情况下创建变量。

    在此处输入图像描述

  2. 所有变量必须以 形式声明Dim name As DataType,否则它们默认为数据类型Variant

  3. 在同一行上声明的变量必须各自指定一个数据类型,即Dim wb As Object, ws As Object, xlr As Object. 任何没有数据类型的将默认为数据类型Variant

  4. .Text就像你Range在错误的地方一样抛出错误。应该是ActiveDocument.Paragraphs(j).Range.Text。这是 Intellisense 在您键入时会向您显示的内容。

  5. 跨 Office 应用程序编码时使用工具 | 添加相关库并避免使用Object(又名后期绑定)的引用。这将有助于确保数据类型正确,并使您的编码更容易。当您只使用 Office 库时,后期绑定没有任何优势。


推荐阅读