excel - 从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
解决方案
确保在工具 | 选项 | 编辑器您已选中“需要变量声明”,如下所示。这将自动放置
Option Explicit
在您创建的每个新模块的顶部,并防止您在未先声明变量的情况下创建变量。所有变量必须以 形式声明
Dim name As DataType
,否则它们默认为数据类型Variant
在同一行上声明的变量必须各自指定一个数据类型,即
Dim wb As Object, ws As Object, xlr As Object
. 任何没有数据类型的将默认为数据类型Variant
.Text
就像你Range
在错误的地方一样抛出错误。应该是ActiveDocument.Paragraphs(j).Range.Text
。这是 Intellisense 在您键入时会向您显示的内容。跨 Office 应用程序编码时使用工具 | 添加相关库并避免使用
Object
(又名后期绑定)的引用。这将有助于确保数据类型正确,并使您的编码更容易。当您只使用 Office 库时,后期绑定没有任何优势。
推荐阅读
- windows - 无法在 Server 2012 上的 Windows 10 Hyper-V 上运行 Oracle VirtualBox
- excel - 使用 Excel 工作表中的值设置任务的工作完成字段
- vba - 在 MS-Access/VBA 中查找 OS 短日期格式字符串
- batch-file - 如何让 echo 命令显示 %date% 而不是打印实际日期
- html - 在选项中选择嵌套标签可防止调用方法
- mysql - MySQL - 3 个更新需要在过程中逐个运行
- spring-boot - Spring Boot + Spring Security Keycloak 适配器能否在令牌到期时自动刷新 HttpSession 中包含的访问令牌?
- html - HTML中标签的条件属性是什么?
- flask-sqlalchemy - 如何在 Marshmallow 中创建模式以反向嵌套查询数据?
- mongodb - 如何对文档进行分组并获取文档数量以及在 mongoDB 中获取子文档的平均值