我有一个非常大的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
我遇到的真正问题是找到有关将VBScript与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
答案 0 :(得分:2)
下面的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进行类似的操作,将命名的常量替换为其数值等效项。