【发布时间】:2015-03-20 16:57:34
【问题描述】:
我有一个包含多个段落的文档。我想遍历文档的每一段并检查引号中是否有单词。如果引号中的单词少于 3 个,我想删除括号内所有出现的文本。
想象一下下面的段落。
您需要包含的信息取决于材料的来源类型。对于“印刷材料”,您通常只需要包括作者(s) (或文章标题,如果没有作者)和出版年份(从不月或日) 在您的参考中。在引用来源的特定部分时(例如,直接引用),您还需要指出页码(s)或其他名称(章、图、表、方程等)。对于 Internet 资源,当页码不可用时,可以使用段落编号。
由于短语 “印刷材料” 仅包含 2 个单词,因此我想删除括号中的所有单词以及括号本身。
我将如何在 Microsoft Word 中使用 VBA 做这样的事情?我发布了一些失败的代码,以表明这是一个真诚的问题。
Sub RemoveUnnecesaryTexts()
Dim doc As Document
Dim para As Paragraph
Set doc = ActiveDocument
For Each para In doc.Paragraphs
Application.ScreenUpdating = False
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Text = "(""<*>"")"
End With
If Selection.Find.Execute Then
Selection.Parent.Select
With Selection.Find
.Text = "\((<*>)\)"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
Next para
End Sub
此代码没有检查引文中的字数,因为我还没有成功做到这一点。但至少它会让你知道我正在尝试做什么。关于我在这里做错了什么有什么想法吗?
【问题讨论】:
-
这个问题表明没有任何研究工作或自助尝试。你已经有一段时间了……你应该比这更清楚吗?
-
@Jean-FrançoisCorbett 很抱歉,如果您是这样看的。我实际上已经寻找了相当长的一段时间,并且已经在这个问题上苦苦挣扎了几个小时。我选择不发布失败尝试的代码,因为我认为它可能会误导潜在的响应,因为我真的迷路了。
-
@Jean-FrançoisCorbett 我已经发布了我失败的代码的示例,它不起作用,以表明我确实尝试过研究这个问题。我只是不知道该去哪里。
-
好的。这可能会让你走上正轨:stackoverflow.com/questions/25617920/…