vbscript - 使用 VBScript 过滤 Word 文档
问题描述
我有一个非常大的 word 文档,大约 100 页,并且是自动生成的。问题是大多数时候我想过滤选项(只有某些部分和小节)。标题 1 是项目,标题 2 是图表,标题 3 是图表的组件。我一直在尝试使用 VBScripts 来选择我想要的标题 2 和 3,然后删除我不想要的任何标题中包含的所有内容。我一直在玩 VBScripts,但似乎无法获得标题列表。这就是我应该拉标题的子的样子。
Sub getHeadings()
Set objSelection = objWord.Selection
For Each p In objSelection.Paragraphs
WScript.Echo p.Range.Text
Next p
End Sub
我遇到的真正问题是找到将 VBScripts 与 Word 结合使用的良好文档。如果有人可以帮助我或为我指出好的文档的方向,那就太好了。
顺便一提。我不能在 VBA 中执行此操作,因为这个 Word 文档是由另一个程序自动生成的,我希望能够在命令行中执行一个快速命令并准备好文档而不是打开文档,找到宏,粘贴进去然后运行。最终目标是将此脚本与生成文档的脚本结合起来。
编辑:根据要求,我添加了一些我用来打开文档的脚本
Dim objWord
Dim path
path = "C:\path\to\doc\test.docx"
Set objWord = CreateObject("Word.Application")
openWordDoc(path)
Sub openWordDoc(filepath)
objWord.Visible = True
Set objDoc = objWord.Documents.Open(filepath)
Set objSelection = objWord.Selection
end Sub
解决方案
下面的 Word 宏允许您选择一个标题级别,然后通过文档查看该级别标题跨越的所有内容,选择保留或删除哪些内容。这比简单地循环遍历所有段落要有效得多。
Sub ReviewHeadings()
Dim RngHd As Range, h As Long, Rslt
h = CLng(InputBox("Input the Heading level (e.g. 1) to process", "Heading Content Review", 1))
If (h < 1) Or (h > 9) Then Exit Sub
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Style = "Heading " & h
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchWildcards = False
.Execute
End With
Do While .Find.Found
Set RngHd = .Paragraphs(1).Range
Set RngHd = RngHd.GoTo(What:=wdGoToBookmark, Name:="\HeadingLevel")
RngHd.Select
Rslt = MsgBox("Retain this portion?", vbYesNoCancel)
If Rslt = vbCancel Then Exit Sub
If Rslt = vbNo Then RngHd.Delete
.Start = RngHd.End
.Find.Execute
Loop
End With
Set RngHd = Nothing
End Sub
您可以使用 VBscript 执行类似的操作,将命名常量替换为它们的等效数字。
推荐阅读
- sql - SQL 游标而不是 select 语句的 union
- ruby - 配置 spec_helper 文件以让默认驱动程序在 Chrome 中打开一个隐身窗口
- excel - Excel:如果列中存在相同的值,则以第一个为ok,第二个,第三个等为wearg
- macos - 运行 npm start 时出错:nvm 与“npm_config_prefix”环境变量不兼容
- python - 熊猫按每一行排序
- flutter - 如何将 Flutter 的 ExpansionPanelList 小部件的默认框装饰更改为圆角矩形框
- docker - 仅针对 REST 请求从一个 docker 容器到另一个容器的连接被拒绝错误
- json - JSON 解析错误:意外的标识符“未定义”(React Native)
- java - 如何以易于测试的方式在 Web 服务中实例化数据源,并且可以通过特定的错误代码失败来处理?
- sas - 如何以以下格式导入 sas 日期时间