vba - 如何使用 VBA 在 Microsoft Word 中的目录后提取隐藏文本?
问题描述
我有一个要求,我必须在 Word 文档中的目录之后提取两行文本。文本被隐藏并添加仅用于 VBA。
我做了一些研究,发现我可以使用该Range
对象从单词 Document 中提取文本,因此我尝试对其进行硬编码,并通过使用得到了我想要的值
MsgBox ActiveDocument.Paragraphs(43).Range.Text
现在,此代码可以用于特定文档,但对于新文档,我不知道目录将在哪里结束以及我必须从中提取的确切行号。
任何帮助表示赞赏并提前感谢。
解决方案
这有点棘手,因为字段对象没有范围,因此您必须寻找字段结果的范围。一旦你有了结果范围,你就可以得到它所在的段落范围,然后是下一个段落的范围,然后当你得到那个段落的文本时。听起来很复杂,但当您了解 Word 对象模型的工作原理后,实际上非常简单。
Sub Test()
Debug.Print GetTextAfterToc
End Sub
Public Function GetTextAfterToc() As String
Dim myfield As Word.Field
For Each myfield In ActiveDocument.StoryRanges(wdMainTextStory).Fields
If myfield.Type = wdFieldTOC Then
GetTextAfterToc = myfield.Result.Paragraphs(1).Range.Next(unit:=wdParagraph, Count:=1).Text
Exit Function
End If
Next
End Function
推荐阅读
- xcode - 在 Xcode 中并排显示暗模式和亮模式
- javascript - 为什么即使对于单个 GET 请求,这两个中间件也会被调用两次?
- jquery - jQuery Datepicker 日文日历
- sql - 如何进行 SQL 查询以计算会话数包括几个操作
- apache-spark - 各种 Hive 表的 parquet-mr 版本会有所不同
- swift - segue 是否创建了目标 ViewController 的实例?如果我完成了它们,我应该从堆栈中删除它们吗?如果是这样,怎么做?
- birt - 如何在母版页页脚中设置数据集值
- sql - 查找嵌套位置标签的最佳数据结构
- drupal - 如何通过模式匹配为 Drupal 创建 URL 别名
- pandas - 以百分比形式打印特定列